如果您有模块对象,则可以模仿逻辑import *
用法,如下所示:
module_dict = my_module.__dict__
try:
to_import = my_module.__all__
except AttributeError:
to_import = [name for name in module_dict if not name.startswith('_')]
globals().update({name: module_dict[name] for name in to_import})
但是,这几乎肯定是一个非常糟糕的主意。您将毫不客气地踩着任何具有相同名称的现有变量。当您from blah import *
正常执行此操作时,这已经够糟糕的了,但是当您动态执行此操作时,关于哪些名称可能会冲突的不确定性更大。最好只是导入my_module
,然后使用常规属性访问(例如my_module.someAttr
)getattr
从中访问所需的内容,或者如果需要动态访问其属性,则更好。