内置函数就是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*2t= lambda p:p*3x= 2x=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 inzip(t1,t2)]print(test(t1,t2))#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))#还可以这样写
print([{i:j} for i,j inzip(t1,t2)])
#3.以下代码的输出是什么?请给出答案并解释。
defmultipliers():return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()]) #[6,6,6,6]#请修改multipliers的定义来产生期望的结果。#修改后的代码:
defmultipliers():return (lambda x:i*x for i in range(4))print([m(2) for m in multipliers()]) #[1,2,4,6]