让我们有这个代码:
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()
正文。
最佳答案
您可以使用 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
被调用),但这不会增加太多开销。
关于python - 函数内部的函数 - 每次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031092/