【发布时间】:2016-06-20 13:32:49
【问题描述】:
我在 Python 2 和 3 中注意到了这种行为:
>>> id(lambda: 1) == id(lambda: 2)
True
它们也共享相同的哈希。
>>> hash(lambda: 1) == hash(lambda: 2)
True
我希望两个 lambda 函数有两个不同 ids 和 hashes。
我进行了更多调查,在返回闭包时发现了类似的行为:
>>> def foo(n):
... def bar():
... return n
... return bar
...
>>> id(foo(1)) == id(foo(2))
True
在这种情况下,我认为id 是相同的,因为返回的函数完全相同,而变化的是只是封闭范围。
lambda 函数是否发生类似情况?
【问题讨论】: