在Python中使用timeit时出现NameError

发布于 2024-09-11 05:46:57 字数 287 浏览 4 评论 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))

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恋你朝朝暮暮 2024-09-18 05:46:57

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

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

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

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

Timer doesn't know about j. You need to do something like "test(%d)" % j (or from __main__ import j or put the definition of j inside the string, too).

Also, the argument to timeit is different from the argument to your test function (so the different uses of j 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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文