如果我有一个函数
def bar(n):
return n**100
之间会有性能差异吗?
for i in range(1000000):
x = bar(30)
# use x for something
和
x = bar(30)
# use x for something 1,000,000 times
不知道解释器有没有针对这种情况优化过?
请您参考如下方法:
CPython 编译器只做很少的简单 peephole optimisations ,但它肯定永远不会优化函数调用——它怎么知道函数是否有副作用呢?在编译时,它通常甚至不知道名称 bar 指的是哪个函数,并且名称绑定(bind)可能随时更改。
如有疑问,只需自己测量性能 -- timeit模块是你的 friend 。
