" lambdas不能有作业和#34; - 那么为什么" foo = lambda x:x * 2"法律?

时间:2016-09-14 14:34:41

标签: python lambda variable-assignment

我正在阅读Steven Lott撰写的“功能性Python编程”,这是一本关于使用Python'功能性的'而不是以更加面向对象的方式,而是侧重于大多数示例的探索性数据分析。

洛特说,拉姆达不能发表作业声明。但是在同一页面上,他为变量分配了一个lambda函数:

>>mersenne = lambda x: 2**x-1
>>mersenne(17)
 131071

这怎么不是作业陈述?还有其他一些分配意识吗?我失踪了?

2 个答案:

答案 0 :(得分:5)

您不能在“lambda”函数中进行赋值,但lambda本身可用于赋值。

所以你不能说lambda x: y = x*2; return y之类的内容,但你可以说foo = lambda x: x*2

答案 1 :(得分:0)

这不是一项任务。

Python中的lambda不能包含赋值。但这几乎是Python强制执行功能范式的唯一方面。该语言的其余部分具有一些不可避免的程序特征;很难想象一个不包含任何赋值的Python程序。