lambda 参数列表:表达式
lambda x:x**2
(lambda x : x ** 2)(4) #调用
参数列表不需要小括号
冒号是用来分割参数列表和表达式的
不需要return,表达式的值,就是匿名函数的返回值
lambda表达式只能写在一行上面,称为单行函数
用途:
在高阶函数传参时,使用lambda表达式,往往能简化代码
print(1, (lambda: 0)()) # 0
print(2, (lambda x, y=3: x + y)(5)) # 8
print(3, (lambda x, y=3: x + y)(5, 6)) # 11
print(4, (lambda x, *, y=30: x + y)(5)) # 35
print(5, (lambda x, *, y=30: x + y)(5, y=10)) # 15
print(6, (lambda *args: (x for x in args))(*range(5))) # <generator object
print(7, (lambda *args: [x+1 for x in args])(*range(5))) # [1,2,3,4,5]
print(8, (lambda *args: {x+2 for x in args})(*range(5))) # {2,3,4,5,6}
print(9, [x for x in (lambda *args: map(lambda x: x+1, args))(*range(5))])
# [1,2,3,4,5]
print(10, [x for x in (lambda *args: map(lambda x: (x+1, args), args))(*range(5))])
# [(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]