【发布时间】:2018-11-11 14:40:42
【问题描述】:
我创建了一个函数,它可以将 python 中的模块作为您想要的名称导入。我只想知道,如何使这个新的局部变量在全局范围内可访问。
def myimport(modulename, newname):
exec('%s = __import__("%s")'%(newname, modulename))
myimport('os', 'pax')
现在 pax 变量无法在函数外部访问,我希望它可以访问。
【问题讨论】:
-
请不要那样做...... Python 已经有这样的语法:
import os as pax。 -
我知道已经有语法了。但也许将来我可能需要做其他事情并遇到同样的问题。我只是想知道我们该怎么做。 :D tq.
-
但是在这里你基本上违反了两件事:(a)你使用
exec(..),它非常不安全并且是软件反模式,第二(b)你的目标是创建一个变量 by名称。如果有人想将其定义为'1'或'foo bar'怎么办?以这种方式定义它不会有帮助(最终)。大多数 IDE 也无法帮助处理这种“动态”导入,而且还不清楚是否存在“名称冲突”。 -
你考虑过使用 importlib 吗?docs.python.org/3/library/…
-
myimport 函数可以与 try-catch 一起使用。我关心的不是导入模块。我只是想知道是否有任何方法可以将未定义的变量名从本地范围转移到全局范围。
标签: python python-2.7 scope