为什么Python定义的函数比“def”范围之外的全局脚本执行得更快?

时间:2016-09-29 04:22:29

标签: python performance function python-3.x

好的,所以这个问题的措辞很难说。

但是,我有两个用Python 3.5.2编写的脚本:

import time
t0 = time.clock()
def hello():
    a = []
    for i in range(10000000):
        a.append(i)
hello()
t1 = time.clock()
print((t1-t0))

出:1.0960211284655088

import time
t0 = time.clock()
a = []
for i in range(10000000):
    a.append(i)
t1 = time.clock()
print((t1-t0))

出:1.432725885821128

第一个脚本在定义的函数内运行得更快,然后调用;但是,我不知道为什么会这样,我想了解所以我可以学习如何优化代码。

这是一个只涉及Python 3这一特定方面的问题。我知道列表推导和map()是执行此特定迭代的更快,更快速和更pythonic的方法。

1 个答案:

答案 0 :(得分:0)

在我看来。差异是由搜索变量a引起的。 如果a是本地的,函数会快速找到并附加。 如果a是全局的,则函数首先在本地搜索,然后在全局搜索。这就是花费更多时间的原因。