我在用python为一个朋友写一个愚蠢的程序,上面印着“我们是说‘Ni’的骑士!”。然后睡3秒钟,然后打印“Ni!”使用random
模块的uniform()
方法随机间隔20次。这是我的代码:
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
导致此错误的原因是什么?如何修复代码?
编辑:坦率地说,我也不知道我有什么问题。第二天早上我运行了代码,它运行得很好。我发誓昨晚代码出错了。。。无论如何,谢谢你的洞察力。
那是不可能的。您的代码示例与产生该错误的代码不同。
也许你有
time.sleep(..)
而不是sleep(..)
。你已经完成了from time import sleep
。要使用time.sleep(..)
表单,必须import time
通过在调用函数之前将其导入另一个文件,您只需导入该函数的内容。该文件顶部的导入不会导入到其他文件中。您应该将两个导入都放入函数中,使其看起来像这样:
这将验证所需的导入是否在调用函数的位置可用。不必担心双重导入,因为python不允许这样做-如果在导入此函数的文件中导入时间,则不会
为尸检道歉,但我也遇到了这个问题,虽然方式略有不同。
我在Apache和python下用mod_python运行
time.time()
。如果我试图加载带有time.time()
的页面,它将无法抱怨“没有定义全局名称‘time’”。但是,如果我用ssh连接到我的web服务器并从命令行运行完全相同的方法,它就会工作。最后,重启Apache2服务解决了这个问题。我不知道这有什么用。我想模块在某个时候卸载了,然后就不会重新加载,尽管有import time命令。
很奇怪,有点神秘。抱歉,我从来没有找到真正的原因,但希望这有助于下一个人。
相关问题 更多 >
编程相关推荐