Python3 - 定义匿名或内联函数

问题

操作创建一个很短的回调函数,但又不想用 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表达式允许定义简单函数,但是它的使用是有限制的。只能指定单个表达式,它的值就是最后的返回值。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容