假设我有两个功能
def myfunction1(number):
biglist = [1,2,3,4,5,6,7,8,9]
print number*biglist
biglist = [1,2,3,4,5,6,7,8,9]
def myfunction2(number, biglist):
print number*biglist
我用 ipython 的魔法 %timeit 计时:
In [5]: %timeit myfunction2(number, biglist)
1000000 loops, best of 3: 607 ns per loop
In [6]: %timeit myfunction1(number)
1000000 loops, best of 3: 841 ns per loop
这是否意味着biglist
每次调用 myfunction1 时都会重新声明该变量?我会猜到,在第一次函数调用之后,Python 会以某种方式将biglist
变量与函数一起存储,这样它就不必在每次调用函数时重新初始化列表。
我不知道 Python 的内部工作原理,所以我只是猜测。有人可以解释实际发生的事情吗?