在定义变量之前使用它

时间:2018-11-09 21:32:39

标签: python

当pop_zero和pop_end在甚至没有定义(x = list(range(i)))之前使用pop变量x时,下面的代码为什么起作用?换句话说,pop_zero和pop_end是根据x定义的,但是x是在pop_zero和pop_end之后定义的。为什么这不是问题?

import timeit
from timeit import Timer
pop_zero = Timer("x.pop(0)", "from __main__ import x")
pop_end = Timer("x.pop()", "from __main__ import x")
print("pop(0) pop()")
for i in range(1000000,100000001,1000000):
    x = list(range(i))
    pt = pop_end.timeit(number=1000)
    x = list(range(i))
    pz = pop_zero.timeit(number=1000)
    print("%15.5f, %15.5f" %(pz,pt))

1 个答案:

答案 0 :(得分:1)

创建Timer对象时,它实际上尚未在其中执行代码。只有当您调用其方法之一(即.timeit())时,它才真正运行代码。