“ lambda不能有赋值语句”-那么“ foo = lambda x:x * 2”为什么合法?

use*_*752 0 python lambda variable-assignment

我正在阅读Steven Lott撰写的《 Functional Python Programming》,这是一本关于“功能性”地使用Python而不是以面向对象的方式使用的书,其中大部分示例着重于探索性数据分析。

洛特说Lamda不能有赋值语句。但是在同一页面上,他为变量分配了一个lambda函数:

>>mersenne = lambda x: 2**x-1
>>mersenne(17)
 131071
Run Code Online (Sandbox Code Playgroud)

那怎么不是任务陈述呢?我还缺少其他“分配”的感觉吗?

Hor*_*man 5

您无法在“ lambda”函数中进行分配,但是lambda本身可以在分配中使用。

所以你不能说类似lambda x: y = x*2; return y,但是你可以说foo = lambda x: x*2