Python 嵌套函数不等于其自身

标签 python python-3.x function nested

这个简单的 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/

相关文章:

javascript - 为什么在 for 循环中定义的变量在 setTimeout 函数中不可见?

Python - 类中的Timeit

python - 属性错误 : (Class) object has no attribute '__name__' Creating ModelForms [Django & Python2. 7]

linux - 为什么打开字符设备文件时Python为什么执行 `TIOCGWINSZ` ioctl调用?

javascript - Eloquent JavaScript 中的removeEventListener 示例

php - 调用函数 - 如何简化它?

python - 在 Jinja 2 中使用正则表达式来编写 ansible 剧本

python - float 和 numpy.float64 上的 Python 回合的不同回合行为

Python错误 'numpy.float64'对象无法解释为整数

python - 无法导入数据类模块