全局名称 "x" 未使用 timeit 定义

Global name "x" not defined using timeit

我有一个简单的斐波那契函数,它使用了记忆功能,它本身就可以正常工作。但是,当我想使用 timeit 计时时,我得到 "NameError: global name 'memo' is not defined",即使它是。

#!/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 很陌生,所以我不知道。

memo 添加到从 __main__ 导入的变量列表中:

mytime2 = timeit.Timer('fibmem({}, memo)'.format(x),'from __main__ import fibmem, memo')