目录:
一.匿名函数的使用场景
二.系统高阶函数
三.多层装饰器
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一.匿名函数的使用场景:
匿名函数经常在高阶函数中被当做参数使用
例子:
def func1(a, f):
print('+++++++++>', a)
r = f(a)
print('======>', r)
func1(8, lambda a: a + 7) # 当想使用一个函数的返回值并且只用一次,这时候可以用匿名函数做参数
调用结果:
+++++++++> 8
======> 15
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
二.系统高阶函数:
高阶函数:
在Python中,函数其实也是一种数据类型。其符号是function,。
通俗:在一个函数中,它的一个内部函数与其局部变量处于同等地位,将其作为参数或返回值。这样一个函数我们叫做高阶函数。
系统高阶函数:max min sorted
例子:
# 使用匿名函数找出列表中年龄最大的人
list1 = [('tom', 19), ('tony', 20), ('lily', 18), ('rose', 21)]
m = max(list1, key=lambda x: x[1]) # 对于list1这种含有多种数据类型的变量就可以用匿名函数,这种格式会自动先遍历再比较,这三个系统函数的使用各式是一样的
print(m)
调用结果:
('rose', 21)
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
三.多层装饰器:
顾名思义就是多个装饰器去装饰一个函数,这些装饰器们是按一定的顺序去装饰。先执行离被装饰函数较近的装饰器,再执行较远处的装饰器.
例子:
def zhuang1(can1):
def nei1(*args, **kwargs):
can1(*args, **kwargs)
print('草房')
print('1')
return nei1
def zhuang2(can2):
def nei2(*args, **kwargs):
can2(*args, **kwargs)
print('精装房')
print('2')
return nei2
@zhuang2 # 将被装饰器1装饰后的函数再用装饰器2进行装饰
@zhuang1 # 这里先用装饰器1
def toa(a):
print(a)
toa('地基')
调用结果:
1
2
地基
草房
精装房 # 外部代码和内部代码执行也顺序之分,先按其顺序执行外部代码,再按其顺序执行内部代码和赋值