有两个例子。
# 1st example
>>> def accum(sum, a):
return sum + a
>>> sum = 0
>>> for sum in iter(lambda:accum(sum, 2), 40):
print sum,
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32...
# 2nd example
>>> def accum(sum, a):
return sum + a
>>> sum = 0
>>> for sum in iter(accum(sum, 2), 40):
print sum,
TypeError: iter(v, w) : v must be callable
为什么lambda函数不会出错但accum函数会出错?
提前致谢 :)
无论哪种情况,您都不会传递带有参数的函数。在第二种情况下,的值v
绑定到整数2
,而在第一种情况下v
指的是可调用的匿名lambda函数() -> sum + a
。
以下2个几乎相等:
def x():
return sum + a
x = lambda: sum + a
除了lambda不能提供良好的调试回溯,因为lambda函数是未命名的。
另外,变量的名称有点误导,使我花了一些时间弄清楚发生了什么。正好有2个变量称为sum
-一个在accum
函数内,另一个在全局范围内。还有第三个带蒙版的蒙版,其中包含全局内置函数sum
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句