问题
操作创建一个很短的回调函数,但又不想用 def
去写一个单行函数, 而是希望通过某个快捷方式以内联方式来创建这个函数。
解决方案
当一些函数很简单,仅仅只是计算一个表达式的值时,可以使用lambda
表达式来实现。比如:
add = lambda x, y: x + y
print(add(1, 3))
4
print(add('Hello', '_Python'))
Hello_Python
使用lambda表达式跟下面定义的函数效果是一样的:
def fun(x, y):
return x + y
print(fun(1, 3))
4
lambda
表达式,典型的使用场景是排序或数据reduce等:
names = ['David Beazley', 'Brian Jones', 'Raymond Hettinger', 'Ned Batchelder']
# 按name的最后一个单词小写后排序
sorted(names, key=lambda name: name.split()[-1].lower())
print(names)
['David Beazley', 'Brian Jones', 'Raymond Hettinger', 'Ned Batchelder']
讨论
尽管lambda
表达式允许定义简单函数,但是它的使用是有限制的。只能指定单个表达式,它的值就是最后的返回值。