本文共 980 字,大约阅读时间需要 3 分钟。
匿名函数与偏函数
匿名函数
Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下:
lambda arg1, arg2, … : expression
例如:
add = lambda a,b=2 : a + bprint(add(3)) # 5print(add(3, 10)) # 13
匿名函数具有比较浓郁的函数式编程风格,例如:
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]print(filter(lambda x: x % 3 == 0, foo))print(map(lambda x: x % 3 == 0, foo))
使用lambda表达式,可以避免定义函数,从而使得代码更简洁。
偏函数
Python中的函数参数可以带默认值,这样能够降低函数调用的复杂度,例如:
def add(a, b, c=100): return a + b + cprint(add(40, 30)) # 170
当函数的参数个数太多,需要简化时,使用偏函数(functools.partial)可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
例如:
from functools import partialdef add(a, b, c=100): return a + b + cplus = partial(add, c=100)print(plus(40, 30)) # 170print(plus(-20, 30)) # 110
上面的例子中,partial(add, c=100)使用了关键字参数c=100。如果只是简单地使用partial(add, 100),那么100会被认为是参数a的固定值。例如:
from functools import partialdef add(a, b, c=100): return a + b + cplus = partial(add, 100)print(plus(40)) # 240print(plus(40, 50)) # 190
这里,plus(40)传入的40会被赋值给b,而c使用默认参数100。
转载地址:http://gbofk.baihongyu.com/