在python中使用timeit的NameError

在python中使用timeit的NameError,python,timeit,Python,Timeit,当我尝试运行这些代码时,我得到了namererror。“全局名称j未定义”。我怎样才能修好它 def test(j): for i in range(j): j = i**2 if __name__=='__main__': from timeit import Timer j = 30 t = Timer("test(j)","from __main__ import test") print( t.timeit(j)) Timer不

当我尝试运行这些代码时,我得到了
namererror
。“全局名称j未定义”。我怎样才能修好它

def test(j):
    for i in range(j):
        j = i**2

if __name__=='__main__':
    from timeit import Timer
    j = 30
    t = Timer("test(j)","from __main__ import test")
    print( t.timeit(j))

Timer
不知道
j
。您需要执行类似于
“test(%d)”%j
(或
从\uuuu main\uuuu导入j
,或将
j
的定义也放入字符串中)

另外,
timeit
的参数与
test
函数的参数不同(因此,
j
的不同用法可能不是您应该做的或想要表达的意思)。timeit参数给出测试函数的执行次数

p、 请注意,您需要缩进问题中的任何代码,以将其格式化


p、 另外,这里曾经有一条评论说不使用来自uuu main_uuuuimport的
,但这确实有效

定时器
不知道
j
。您需要执行类似于
“test(%d)”%j
(或
从\uuuu main\uuuu导入j
,或将
j
的定义也放入字符串中)

另外,
timeit
的参数与
test
函数的参数不同(因此,
j
的不同用法可能不是您应该做的或想要表达的意思)。timeit参数给出测试函数的执行次数

p、 请注意,您需要缩进问题中的任何代码,以将其格式化


p、 另外,这里曾经有一条评论说不使用来自uuu main_uuuuimport的
,但这确实有效

为什么在许多不同的上下文中继续使用变量
j
from\uuuu main\uuu导入测试,j
起作用,并且您有太多
j
为什么在许多不同的上下文中继续使用变量
j
from\uu main\uu导入测试,j
有效,而您有太多的
j
s
from\uuuuu main\uuuu导入测试
有效,请尝试。是首选吗?不知道,但我希望您能解释一下原因。
from\uuuuuu main\uuuuu import test
works,试试看。是首选吗?不知道,但我希望你能解释为什么不能。