<分区>
在 Python 中,可以像这样嵌套函数:
def do_something():
def helper():
....
....
除非 Python 更巧妙地处理这种情况,否则每次使用 do_something
时都必须重新创建 helper
。这样做实际上会影响性能而不是在主函数之外创建辅助函数吗?如果是,它有多好?
<分区>
在 Python 中,可以像这样嵌套函数:
def do_something():
def helper():
....
....
除非 Python 更巧妙地处理这种情况,否则每次使用 do_something
时都必须重新创建 helper
。这样做实际上会影响性能而不是在主函数之外创建辅助函数吗?如果是,它有多好?
最佳答案
是的,在 main 函数中声明一个 helper 比单独声明它们慢:
### test_nested.py ###
import timeit
def foo():
def bar():
pass
pass
print(timeit.timeit("foo()", setup="from __main__ import foo"))
### test_flat.py ###
import timeit
def foo():
pass
def bar():
pass
print(timeit.timeit("foo()", setup="from __main__ import foo, bar"))
### Shell ###
✗ python3 ./test_flat.py
0.42562198638916016
✗ python3 ./test_nested.py
0.5836758613586426
这是大约 30% 的减速。请记住,在这种微不足道的情况下,创建和调用函数是解释器所做的全部工作。在任何实际使用中,差异都会小得多。
关于python - 嵌套函数的性能开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055843/