python内置函数与匿名函数

内置函数就是Python个解释器里自带的函数,不用定义可以直接拿来调用。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。



上面的68个函数是按首字母顺序排列的,我们这里按照函数的用途来分为6大类。这里分类介绍他们中重点的几个。

作用域相关的2个。

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

其他类有12个。

input() 用户交互函数,输入的内容返回值是str

print() 输出

eval() 将字符串类型的代码执行并返回结果,一般用于计算

exec()将自字符串类型的代码执行,一般用于执行流程语句

type(o) 返回变量o的数据类型

hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

open()  打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

可以用encoding指定编码.

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量。

迭代器生成器相关的有3个。

range()函数可以生成一个可迭代对象,但不是迭代器,可以通脱for循环来遍历内部元素。

基础数据类型有38个。

 其中和数字相关的14个

数字——数据类型相关:bool,int,float,complex

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

和数据相关的有24个。

重点讲zip()、filter()、map()、sorted()

zip()是拉链函数,依次把两个可迭代对象对应的元素拿出来组成一个元组,它的返回值是个迭代器。

filter()过滤可迭代对象的,使其符合函数要求。

map()使可迭代对象经过函数处理后的结果

sorted()排序,可以指定排序的方式。

匿名函数的定义方法:

函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了~~~

举3个例子

#1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print (x)#24
#2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#还可以这样写
print([{i:j} for i,j in zip(t1,t2)])
#3.以下代码的输出是什么?请给出答案并解释。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])  #[6,6,6,6]
#请修改multipliers的定义来产生期望的结果。
#修改后的代码:
def multipliers():
    return (lambda x:i*x for i in range(4))
print([m(2) for m in multipliers()]) #[1,2,4,6]
原文地址:https://www.cnblogs.com/RyanJin/p/8213809.html