0

当我尝试运行此代码时,我得到了NameError。“未定义全局名称 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))
4

1 回答 1

3

Timer不知道j。您需要执行类似的操作"test(%d)" % j(或者from __main__ import j也将定义j放在字符串中)。

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

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

pps 这里曾经有一条关于不使用的评论,from __main__ import但实际上确实有效!

于 2010-07-26T08:34:03.760 回答