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))]