有可能做这样的事情吗?
def loadModules():
import time
from myModule import *
def runFunction():
try:
print str(time.time())
print myFunction() # myFunction is in myModule (myModule.myFunction)
except NameError:
raise RuntimeError("Module was not initialized. Call loadModules() first.")
if (__name__ == "__main__"):
# this should fail
try:
runFunction()
except RuntimeError:
print "Exception raised as expected."
loadModules()
runFunction() # it should work now
这不会按预期工作,因为在 loadModules 函数中导入模块不会在文件级别声明它们。
对于像我这样的模块,我可以在导入后time
添加一条语句。global time
但是,对于导入的项目未知的情况,我如何才能做到这一点,例如from myModule import *
?我不会自动知道myModule
. 即使我这样做了,那也将是一个丑陋的全球性声明。
本质上,我基本上可以把所有的局部变量都变成全局变量吗?
编辑:这似乎适用于测试代码:
def test():
import time
global time
print "Inside test function: %s" % str(time.time())
test()
print "outside function: %s" % str(time.time())
这也有效:
def test():
from time import time
global time
print "Inside test function: %s" % str(time())
test()
print "outside function: %s" % str(time())
然而这并没有奏效:
def test():
import time
print "Inside test function: %s" % str(time.time())
test()
print "outside function: %s" % str(time.time())