如何from some.module import *
在字符串变量中定义模块的名称?
答案 0 :(得分:2)
此代码导入os
的所有符号:
import importlib
# Load the module as `module'
module = importlib.import_module("os")
# Now extract the attributes into the locals() namespace, as `from ..
# import *' would do
if hasattr(module, "__all__"):
# A module can define __all__ to explicitly define which names
# are imported by the `.. import *' statement
attrs = { key: getattr(module, key) for key in module.__all__ }
else:
# Otherwise, the statement imports all names that do not start with
# an underscore
attrs = { key: value for key, value in module.__dict__.items() if
key[0] != "_" }
# Copy the attibutes into the locals() namespace
locals().update(attrs)
参见例如this question有关from ... import *
操作背后逻辑的更多信息。
现在虽然这有效,但不使用此代码。从命名模块导入所有符号已经被认为是不好的做法,但使用用户给定的名称执行此操作肯定会更糟。如果您需要提示可能出现的问题,请搜索PHP的register_globals
。
答案 1 :(得分:0)
在Python中,内置的 import 函数实现与使用import语句相同的目标,但它是一个实际的函数,它以字符串作为参数。
sys = __import__('sys')
变量sys现在是sys模块,就像你说过import sys。