每次调用封闭函数时,都会创建局部函数的新实例吗?

时间:2018-09-03 04:09:30

标签: python function objectid local-functions

我遇到的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语句后该对象都不存在。

0 个答案:

没有答案
相关问题