在Python中使用timeit时出现NameError
当我尝试运行此代码时,出现 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))
I got NameError
when I try to run this codes."global name j is not defined". How can I fix it?
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))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Timer
不知道j
。您需要执行类似"test(%d)" % j
(或from __main__ import j
或将j
的定义放在字符串也)。此外,
timeit
的参数与test
函数的参数不同(因此j
的不同用法可能不是您应该做的或意思)。 timeit 参数给出测试函数的执行次数。ps 请注意,您需要缩进问题中的任何代码以使其格式化
p.ps 这里曾经有一条关于不使用
from __main__ import
的评论,但这实际上确实有效!Timer
doesn't know aboutj
. You need to do something like"test(%d)" % j
(orfrom __main__ import j
or put the definition ofj
inside the string, too).Also, the argument to
timeit
is different from the argument to yourtest
function (so the different uses ofj
are probably not what you should do or mean). The timeit argument gives the number of executions for the test function.p.s. Note that you need to indent any code in your question to get it formatted
p.p.s. There used to be a comment here about not using
from __main__ import
but that actually does work!