这个简单的 Python 代码得到“False”。
def foo():
def bar():
return 0
return bar
print(foo() == foo())
当我请求时
print(foo(),foo())
我明白了
<function foo.<locals>.bar at 0x03A0BC40> <function foo.<locals>.bar at 0x03C850B8>
那么Python每次都会将bar函数的结果存储在新的内存槽中吗?如果有人解释它在幕后是如何工作的,以及如何稍微修改这段代码以获得“True”(这对我来说仍然是合乎逻辑的!),我会很高兴。
最佳答案
每个 def
语句定义一个新函数。相同的名字和 body 并不重要。你基本上是在做这样的事情:
def foo():
pass
old_foo = foo
def foo():
pass
assert old_foo == foo # will fail
关于Python 嵌套函数不等于其自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254023/