匿名函数概念
匿名函数顾名思义即函数没有具体的名称, 由lambda表达式
来表示。
f = lambda x, y: x + y
print (f, callable(f))
print (f(1, 2))
#result
<function <lambda> at 0x7f88b2ddfe18> True
3
如上举例, lambda x, y: x + y 即为匿名函数。
- 匿名函数需要关键字
lambda
来表达 -
x/y
是匿名函数的参数 -
:
为分隔符 - 匿名函数
有且仅有一个表达式,没有return,返回值就是该表达式的结果
优缺点
优点:
- 没有函数名称,可以
节省定义变量的内存
- 无需担心和其他函数之间的命名冲突, 也不需要抓耳挠腮的起一个简单易懂的函数名
- 简化函数,可以让代码更加简洁, 常常配合
filter/map/reduce
使用
缺点:
- 对不熟悉lambda的人而言,可能会造成代码的晦涩难懂
应用注意
1. 可以没有参数,也可以有一个或多个参数, 参数亦可有默认值。
f1 = lambda : 1
f2 = lambda x: x + 1
f3 = lambda x, y, z: x*x + y*y + z*z
f4 = lambda x, y=2, z=3: x*x + y*y + z*z
print(f1())
print(f2(1))
print(f3(1, 2, 3))
print(f4(1))
print(f4(2, 2, 2))
print(f4(2, z=4))
#result
1
2
14
14
12
24
2.匿名函数也是一个函数对象,可以直接后面传递实参; 可以直接赋值给一个变量,再利用变量来调用该函数;也可以作为返回值返回。
print((lambda x, y, z: x + y + z)(1, 2, 3))
f = (lambda x, y, z: x + y + z)
print(f(1, 2, 3))
def add_nums():
return lambda x, y, z: x + y + z
# 调用 add_nums 函数
adds = add_nums()
# 调用 lambda 函数
print(adds(1, 2, 3))
#result
6
6
6
网友评论