函数内部函数-每次?
问题内容:
让我们有以下代码:
def big_function():
def little_function():
.......
.........
Python文档说了aboutdef
语句:
函数定义是可执行语句。它的执行绑定了函数名…
因此,问题是:def little_function()
每次big_function
被调用时是否执行?问题def
完全是关于陈述,而不是little_function()
身体。
问题答案:
您可以使用以下dis
模块检查字节码:
>>> import dis
>>> def my_function():
... def little_function():
... print "Hello, World!"
...
...
>>> dis.dis(my_function)
2 0 LOAD_CONST 1 (<code object little_function at 0xb74ef9f8, file "<stdin>", line 2>)
3 MAKE_FUNCTION 0
6 STORE_FAST 0 (little_function)
9 LOAD_CONST 0 (None)
12 RETURN_VALUE
如您所见,内部函数的代码仅被 编译 一次 。每次调用my_function
它时都会加载并创建一个新的函数对象(在这种情况下,每次调用def little_function
都会 执行my_function
),但这并不会增加太多开销。