Python:“未定义全局名称‘时间’”

新手上路,请多包涵

我正在为一个打印“我们是说’Ni’的骑士!”的朋友用python编写一个愚蠢的程序。然后休眠 3 秒,然后打印“Ni!”使用 random 模块的 uniform() 方法随机间隔二十次。这是我的代码:

 from time import sleep
import random

def knights_of_ni():
    generator = random.Random()
    print "We are the knights who say 'ni'."
    sleep(3)
    for i in range(0,20):
        print "Ni!"
        sleep(generator.uniform(0,2))

I’ve tried to import this module by typing in the interpreter from silly import knights_of_ni() and import silly , then calling the function with either knights_of_ni() or silly.knights_of_ni() (分别),但我总是得到同样的例外:

  NameError: global name 'time' is not defined

是什么导致了这个错误,我该如何修复我的代码?

编辑:坦率地说,我也不确定自己遇到了什么问题。第二天早上我运行了代码,它工作得很好。我发誓昨晚的代码产生了错误……无论如何,感谢您的洞察力。

原文由 Rafe Kettler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 630
2 个回答

这不可能。您的代码示例与产生该错误的代码不同。

也许你有 time.sleep(..) 而不是 sleep(..) 。您已完成 from time import sleep 。要使用 time.sleep(..) 表格,您必须 import time

原文由 Jerub 发布,翻译遵循 CC BY-SA 2.5 许可协议

通过在调用之前将该函数导入另一个文件,您只是导入了该函数的内容。该文件顶部的导入不会导入到您的其他文件中。您应该将两个导入都放入函数中,使其看起来像这样:

 def knights_of_ni():
    from time import sleep
    import random
    <the function contents>

这将验证您需要的导入在您调用该函数的位置是否可用。不用担心双重导入,因为 python 不允许这样做 - 如果在导入此函数的文件中导入时间,则不会重新导入

原文由 Emily 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题