我有一個簡單的使用memoisation的斐波那契函數,它的工作原理很好。但是,當我想使用timeit計時時,我得到「NameError:全局名稱」備忘錄「未定義」,即使它是。全球名稱「x」沒有使用timeit定義
#!/usr/bin/python
import sys
import timeit
memo = [0] * 100
def fibmem(n,memo):
#function things
for x in range(1,40):
mytime2 = timeit.Timer('fibmem('+str(x)+', memo)','from __main__ import fibmem')
delta2 = mytime2.timeit(1)
print str(x) + ' ' +str(delta2)
memo[:] = []
我試着仰視它可能是什麼,但大部分的答案涉及包括from __main__ import
這裏是沒有問題的。我相信這仍然與範圍有關,但我對timeit很陌生,所以我不知道。
的可能的複製[入門「全局名稱‘富’是沒有定義」與Python的timeit(https://stackoverflow.com/questions/551797/getting-global-name-foo-is-not-defined-with-pythons-timeit) – sds