装饰器
装饰器定义:用别的函数修改原函数,本质是闭包
扩展开发,修改原代码封闭,不改变调用方式
格式:装饰器的名字在被装饰的函数正上方独占一行
语法糖:被装饰的函数名=装饰器的函数
lambda 匿名函数
lanmbda 参数:返回值
f=lambda x,y,z:x+y+z 匿名函数定义的时候没有函数名,没有def,有形参,可以接收多个形参 print(f(1,2,3))
结果为6
匿名函数没有名字,怎么查看 用函数__name__
匿名函数的返回值只能是一个,不能是多个
print((lambda x:x) () ) 调用的时候要传参
内置函数
zip:把每个列表相同位置的元素放入一个列表中
lst=[1,2,3,4] lst1=[1,2,3,4,5] lst2=[3,4,5,6,7] for i in zip(lst,lst1,lst2) print(i)
结果:[1,1,3],[2,2,4],[3,3,5],[4,4,6]
sorted:排序
li=['放假','胜多负少','水电费','问我干啥的'] print(sorted(li,key=lambda x:len(x))) sorted(可迭代对象,key=函数规则)
filter:筛选元素
li=[1,2,3,4,5,6,7] print(list(filter(lambda x:x>3,li))) filter(函数规则,可迭代对象)
map:累加
lst=[1,2,3,4]
lst1=[13,4,5,6]
print(list(map(lambda x,y:x+y,lst,lst1)))
reduce:累计算
from functools import reduce 先引入reduce lst=[1,2,3,4] print(reduce(lambda x,y:x+y,lst))
四舍五入:reduce
print(reduce(4,33)) 4
枚举:enumerate()
li=[1,2,3,4] for k,i in enumerate(li): 将可迭代对象放里面,默认从0开始,自己可以指定数字 print(k,i) 01 12 23 34
print(3,i) 31 32 33 34