小编典典

E731不分配lambda表达式,使用def

python

每当我使用lambda表达式时,都会收到此pep8警告。不建议使用lambda表达式吗?如果不是,为什么?


阅读 218

收藏
2020-12-20

共1个答案

小编典典

您遇到的PEP-8中的建议是:

始终使用def语句代替将lambda表达式直接绑定到名称的赋值语句。

是:

def f(x): return 2*x

没有:

f = lambda x: 2*x

第一种形式表示结果函数对象的名称专门为“ f”,而不是通用的“
”。通常,这对于回溯和字符串表示形式更为有用。使用赋值语句消除了lambda表达式可以提供的优于显式def语句的唯一好处(即,它可以嵌入较大的表达式中)

将lambda分配给名称基本上只是复制了def-的功能-通常,最好以单一方式进行操作以避免混淆并增加清晰度。

lambda的合法用例是您要在不分配函数的情况下使用它,例如:

sorted(players, key=lambda player: player.rank)

通常,反对这样做的主要理由是def语句将导致更多的代码行。我对此的主要回应是:是的,这很好。除非您是打高尔夫球的人,否则不应该减少行数:一目了然。

2020-12-20