我遇到的Python教程提到每次调用封闭函数时都会创建局部函数的新实例。
我尝试通过以下两个示例进行测试:
示例1 :我正在从本地函数(为每个函数调用创建的新实例)中提取root to: 'home#index'
个本地函数。这项工作符合预期。
object id
示例2 :但是,当从外部函数中获取本地函数的 >>> def outer():
... def inner():
... print(inner)
... inner()
...
>>> outer()
<function outer.<locals>.inner at 0x7f7b143bd620>
>>> outer()
<function outer.<locals>.inner at 0x7f7b143bd6a8>
时, Python似乎没有会为以下情况创建本地函数的新实例:每次调用外部函数。
object id
有人可以指出这里发生了什么吗?
我知道:
>>> def outer2():
... def inner2():
... pass
... print(inner2)
... inner2()
...
>>> outer2()
<function outer2.<locals>.inner2 at 0x7f7b143bd7b8>
>>> outer2()
<function outer2.<locals>.inner2 at 0x7f7b143bd7b8>
我的问题是:
为什么两个示例的行为都不同,尽管在两种情况下,执行print语句后该对象都不存在。