内置函数,匿名函数
常用的内置函数:
1.作用域相关:locals() globals() *****
globals() 获取全局变量的字典
locals() 获取执行本方法的所在的命名空间内的局部变量的字典
1.1其他:eval() exec() compile() 了解,慎用
eval() 将字符串类型的代码执行并有返回值
exec() 将字符串类型代码执行无返回值
compile() 将字符串类型的代码编译。代码对象能通过exec语句来执行或者eval()进行求值
print(eval("1+2")) #3 print(exec("1+2")) #None print(exec("print('1+2')")) #1+2 None
2.输入输出相关:input() print()*****
input() 输入
s = input("请输入内容") #输入的内容赋值给s print(s) #输入什么打印什么,类型为str
print() 输出 看源码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print """ print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件 sep: 打印多个值之间的分隔符,默认为空格 end: 每一次打印的结尾,默认为换行符 flush: 立即把内容输出到流文件,不作缓存 """ print源码剖析
f = open("tmp_file","w") print(123,234,345,sep=",",file=f) 将123,234,345,以逗号隔开,写入文件tmp_file文件中
3.数据类型相关:type() 返回变量的数据类型 *****
4.内存相关: id() hash() ***
id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
文件操作相关: open() *****
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+) 可以用encoding指定编码
模块操作相关
__import__导入一个模块
import time
和调用相关 callable(o) o是参数,看这个变量是不是可调用 dir()
如果o是一个函数名,就会返回True
def func():pass print(callable(func)) #True #参数为函数名 print(callable(123)) #False #数字不能调用
dir() 返回一个列表,默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
和数字相关:
数据类型相关:bool,int,float,complex
进制转换相关:bin(十转二)oct(十转八),hex(十转十六)
数学运算:abs(绝对值),divmod(返回(除,余)),min(最小),max(最大),sum(求和),round(小数精确),pow(幂运算)
abs()返回数字的绝对值
round() 保留浮点数的小数位数,默认保留整数
divmod(除数,被除数):计算除数与被除数的结果,返回一个包含商和余数的元组
pow() 求某个数的几次方
print(abs(-5) ) #5 print(divmod(12,5)) #(2,2) 商为2,余数为2 print(round(7*3.235,2)) #22.64 #(保留俩位小数 print(pow(3,2)) #9 #3的2次方
sum(可迭代对象,初始值(默认=0)) 求和,
min(可迭代 对象,key)返回可迭代对象的最小值
max(可迭代对象,key)返回可迭代对象的最大值,可以通过自定义函数规则来进行
相关内置函数 reversed() 翻转 并返回翻转序列的迭代器
slice() 构造一个切片模板,用于对许多列表进行相同的切片
li = ['a','b','c','d','e','f','g'] sli_obj = slice(3) print(li[sli_obj])
字符串相关
str 将数据类型转换成字符串类型
format 与具体数据相关,用于计算各种小数
bytes 用于不同编码之间的转化,只能单向转化
repr 返回一个对象的string的形式(原形毕露)
b = "123" print(b) #123 print(repr(b)) #'123'
数据集合 dict set
frozenset(返回一个冻结集合,冻结后的集合不能添加任何元素)
相关内置函数:
len() 返回一个对象中元素的个数
sorted: 对所有可迭代的对象进行排序操作
l1 = [("c",20),("b",50),("a",10)] l2 = sorted(l1,key=lambda x:x[1]) print(l2) #[('a', 10), ('c', 20), ('b', 50)]
enumerate:枚举,返回一个枚举对象
all:可迭代对象中,全是True才返回True (用于判断可迭代对象中是否有空的字符,列表)
any:可迭代对象中,有一个True就返回True
zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
l1 = [1,2,3,5,6,7] tu1 = ('alex','太白', 'wusir', '女神') dic = {'name': '日天', 'age':28, 'hobby': 'tea', 'weight':100} l2 = zip(l1,tu1,dic) for i in l2: print(i) #(1, 'alex', 'name') (2, '太白', 'age') (3, 'wusir', 'hobby') (5, '女神', 'weight')
filter(函数,可迭代对象) 过滤,迭代器 与函数生成器的筛选模式相同
l1 = list((i for i in range(10) if i%2==0)) print(l1) #[0, 2, 4, 6, 8] def func1(x): return x % 2 == 0 print(list(filter(func1,l1))) #转换成列表的形式[0, 2, 4, 6, 8] #filter 生成的是迭代器
map(函数,可迭代对象)会根据提供的函数对可迭代对象进行映射 迭代器 循环模式 与函数生成器的循环模式相同
l1 = [1,2,3,4] print(list((i**2 for i in l1)) ) # [1, 4, 9, 16] def func(x): return x**2 print(list(map(func,l1))) #[1, 4, 9, 16]
匿名函数 :lambda表达式
对于简单的函数进行缩写,有且只有返回值得函数才可以进用匿名函数进行简化,又称一行函数