fn = lambda a, b: a + b
print(fn(2, 3))
print(fn)
关于以上在PyCharm中书写的Python代码,PyCharm将会报出警告: 难道PEP不推荐我们使用lambda表达式吗?其实不然。
出现警告的原因是:
因为你把lambda表达式赋给了另一个变量。但lambda表达式本就是一个匿名的函数,PEP8规范并不推荐将lambda表达式赋值给一个变量,再通过变量调用函数这种方式。这种方式不能体现lambda表达式的特色,基本只是复制def的功能,同时这个变量名其实也不是lambda表达式真正的函数名,还显得比def方式更容易混淆。事实上lambda表达式的正确用法应该是在不分配变量的情况下使用,例如使用作为函数的实参等情况。
要想了解更多的话,可以参见这篇问答:https://www.e-learn.cn/content/wangluowenzhang/154236。里面的关键是下面一段话:
Assigning lambdas to names basically just duplicates the functionality of def - and in general, it’s best to do something a single way to avoid confusion and increase clarity. The legitimate use case for lambda is where you want to use a function without assigning it, e.g:
sorted(players, key=lambda player: player.rank)
上文翻译: 为名称分配lambda基本上只是复制def的功能-通常,最好以单一方式进行操作,以免造成混淆并提高清晰度。
lambda的合法用例是您要在不分配功能的情况下使用它,例如:
sorted(players, key=lambda player: player.rank)
|