我尝试从函数内部导入一个模块,并且希望它可以像在函数外部导入一样对整个文件可用。由于我没有太多控制脚本的结构,所以这个模块在一个函数中。是否可能做到这一点,而不需要像修改__builtin__或者将需要的东西传递给我的代码那样采取某些手段?
你觉得这种方式怎么样:globals()["os"] = __import__("os")?
我猜如果你愿意,这可以被包装在一个通用函数中,因为模块名称是一个字符串。
__import __()
中的。结果证明,这并没有解决我的问题,但它确实回答了我提出的问题。 - scott77777global
,则它将被导入到全局命名空间中。>>> def import_re():
... global re
... import re
...
>>> re
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 're' is not defined
>>> import_re()
>>> re
<module 're' from '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc'>
除非你真的必须这样做,否则不要这样做——就像用大红字写出来一样。