普通函数
def add(a, b):
return a + b
print add(18, 8)
output:
26
匿名函数
add = lambda a, b: a + b
print add(18, 8)
output:
26
应用
参数为匿名函数
print reduce(lambda a, b: a + b, [1, 3, 5, 7, 9])
output:
25
返回值为匿名函数
def arith(op):
if op == '+':
return lambda a, b: a + b
elif op == '-':
return lambda a, b: a - b
elif op == '*':
return lambda a, b: a * b
elif op == '/':
return lambda a, b: a / b
add1 = arith('+')
add2 = arith('+')
print add1
print add2
print add1(18, 8)
print add2(28, 18)
output:
<function <lambda> at 0x100984758>
<function <lambda> at 0x100984e60>
26
46
总结
- 关键字lambda表示匿名函数,匿名函数跟普通函数一样也是函数对象,但函数体只能有一个表达式,函数返回值就是该表达式值,不能使用return,默号(:)前是函数参数,因此匿名函数不能实现复杂逻辑
- 普通函数会定义变量(函数名)并初始化为指向函数对象,匿名函数顾名思义没有函数名,因此匿名函数不会定义变量(函数名)