【发布时间】:2019-10-17 09:42:51
【问题描述】:
我尝试了一个小测试:
import timeit
a = "hi"
def f():
return "hi"
def g():
return a
timeit.timeit("f()", globals={"f": f}, number=100000000)
# 6.028764325194061
timeit.timeit("g()", globals={"g": g, "a": a}, number=100000000)
# 6.053381357342005
正常版本和“缓存”版本之间似乎没有区别...为什么?也许 Python 会默认缓存模块、函数和类中定义的不可变对象?
编辑:此外还有一个奇怪的事实:代码
timeit.timeit("g()", globals={"g": g}, number=100000000)
没有给我错误。但是我没有将变量a传递给timeit,应该不会给我一个例外吧?
【问题讨论】:
-
如果你添加它作为答案,我会接受它。
标签: python python-3.x micro-optimization