如果您需要将分配
lambda给一个名称,请改用a
def。
defs只是分配的语法糖,因此结果是相同的,并且它们更具灵活性和可读性。
lambdas只能 使用一次,丢弃 没有名称的函数。
但是,这种用例非常少见。您很少需要传递未命名的函数对象。
内建函数
map()和
filter()需要函数对象,但是 列表理解 和 生成器表达式
通常比那些函数更具可读性,并且可以覆盖所有用例,而无需使用lambda。
对于情况下,你真的需要一个小的函数对象,你应该使用
operator模块的功能,如
operator.add代替
lambda x, y: x + y
如果您仍然需要一些
lambda未涵盖的内容,则可以考虑编写
def,以提高可读性。如果函数比
operator模块中的函数更复杂,则a
def可能更好。
因此,现实世界中的好用
lambda例很少见。



