Python: "全局名称'time'未定义
我正在为朋友写一个搞笑的程序,这个程序会打印出“We are the knights who say 'Ni'!”。然后它会暂停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))
我尝试通过在解释器中输入from silly import knights_of_ni()
和 import silly
来导入这个模块,然后用knights_of_ni()
或者silly.knights_of_ni()
来调用这个函数,但我总是得到同样的错误:
NameError: global name 'time' is not defined
是什么导致了这个错误,我该如何修复我的代码呢?
补充一下:老实说,我也不太确定我遇到了什么问题。我第二天早上运行代码时,它就正常工作了。我发誓昨晚代码是出错的……无论如何,感谢你的见解。
8 个回答
抱歉打扰大家,不过我也遇到了这个问题,只是情况稍微不同。
我在Apache和Python下用mod_python运行time.time()
。当我试图加载包含time.time()
的页面时,它会报错,提示“全局名称'time'未定义”。但是,如果我通过SSH登录到我的服务器,直接在命令行运行同样的方法,就能正常工作。
最后,重启Apache2服务解决了这个问题。我不太明白为什么这样有效。我猜可能是某个模块在某个时候被卸载了,然后即使有import time
的命令也无法重新加载。
这真是奇怪,有点神秘。抱歉我没有深入查找实际原因,但希望这能对下一个遇到这个问题的人有所帮助。
下面的代码都能正常运行:
import time
time.sleep(3)
from time import sleep
sleep(3)
这不可能。你给的代码示例和产生那个错误的代码不一样。
也许你用了 time.sleep(..)
,而不是 sleep(..)
。你已经写了 from time import sleep
。如果想用 time.sleep(..)
这种写法,你必须先写 import time
。