python – 函数内部函数 – 每次?

让我们有这样的代码:

def big_function():
    def little_function():
         .......
    .........

Python文档说明了def语句:

A function definition is an executable statement. Its execution binds
the function name…

所以,问题是:
def little_function()在每次调用big_function时执行吗?
问题是关于def语句,而不是little_function()body。

您可以使用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时,它都会被加载并创建一个新的函数对象(在这个意义上,每次调用my_function时都会执行def little_function),但这不会增加很多开销。

http://stackoverflow.com/questions/16031092/function-inside-function-every-time

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 函数内部函数 – 每次?