Python中全局变量和局部变量的速度

时间:2013-11-19 15:07:37

标签: python optimization global-variables local-variables

我想每个人都知道:

  

Python比全局变量更有效地访问局部变量

好的,这是真的:

oldlist = [str(i) for i in range(500)]
oldlist1 = [i for i in range(500)]

%%timeit
newlist = []
for word in oldlist:
    newlist.append(word.upper())

10000次循环,最佳3次:每次循环178μs

%%timeit
def func():
    newlist = []
    for word in oldlist:
        newlist.append(word.upper())
    return newlist
newlist = func()

10000次循环,最佳3次:每次循环93.2μs

不幸的是,看起来它不是全球规则,而是特殊情况:

%%timeit
newlist = []
for nr in oldlist1:
    newlist.append(nr * nr)

10000个循环,最佳3:每循环60.3μs

%%timeit
def func():
    newlist = []
    for nr in oldlist1:
        newlist.append(nr * nr)
    return newlist
newlist = func()

10000次循环,最佳3次:每次循环60.5μs

如何解释这些测试?

1 个答案:

答案 0 :(得分:1)

在最后一个示例中,首先定义一个额外的函数。如果在找到该功能后启动计时器,它应该更快。