当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))
答案 0 :(得分:1)
创建Timer
对象时,它实际上尚未在其中执行代码。只有当您调用其方法之一(即.timeit()
)时,它才真正运行代码。