【发布时间】:2016-01-01 08:43:17
【问题描述】:
我已经编写了一个用于生成 lambda 常量函数字典的函数(它是更复杂函数的一部分,但我已将其简化为以下代码):
def function(a):
_interpolators = {}
for key in a.keys():
_interpolators[key] = lambda t: a[key]
def _interpolate(t):
return {key:f(t) for (key,f) in _interpolators.items()}
return _interpolate
if __name__ == '__main__':
d = {"foo": 2, "bar":4}
f = function(d)
print(f(0)["bar"])
在 OSX El Capitan 上使用 Python 3.5.1,程序的输出是随机的。它可以是2或4,而我希望只有4。我不太明白这种行为。
请注意,python 2.7.10 似乎没有出现“错误”,当我多次运行该程序时,我总是得到4。
这是 python 3.5.1 中的某种错误还是我错过了一些明显的东西?
【问题讨论】:
标签: python python-3.x lambda