可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm writing a silly program in python for a friend that prints "We are the knights who say 'Ni'!". then sleeps for 3 seconds, and then prints "Ni!" twenty times at random intervals using the random
module's uniform()
method. Here's my code:
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()
(respectively), but I always get the same exception:
NameError: global name 'time' is not defined
What is causing this error and how can I fix my code?
Edit: quite frankly, I'm not sure what problem I was having either. I ran the code the next morning and it worked just fine. I swear that the code produced errors last night... Anyway, thanks for your insight.
回答1:
That's impossible. Your code example isn't the same as the code that produced that error.
Perhaps you had time.sleep(..)
instead of sleep(..)
. You have done from time import sleep
. To use the time.sleep(..)
form you must import time
回答2:
Apologies for the necropost but I ran into this problem too though in a slightly different way.
I was running time.time()
with mod_python under Apache and Python . If I attempted to load the page with time.time()
on it, it would fail complaining that "global name 'time' is not defined". However, if I ssh'd into my webserver and ran the exact same method from the command line, it would work.
In the end, restarting the Apache2 service fixed the issue. I'm not sure why this helped. I guess the module was unloaded at some point and then wouldn't reload, despite the import time command.
It's strange and a bit mysterious. Sorry I never hunted down the actual cause but hopefully this helps out the next person.
回答3:
What Jerub said. I ran your exact code and it worked:
>>> import silly >>> silly.knights_of_ni() We are the knights who say 'ni'. Ni! Ni! Ni! Ni! Ni! Ni!
回答4:
I have got the answer! I had the same problem, just restart your Canopy. I am not that good at python or understanding computers, but my program thought i still called 'time' somewhere, even though it was not in the code.