Python 如何使用uu导入导入*__

Python 如何使用uu导入导入*__,python,import,Python,Import,使用\uuuu import\uuuu执行以下操作的最佳方法是什么,以便动态指定模块 from module import * 这与正常的from导入调用相同,您只需为其传递一个列表,其中包含fromlist的'*': moduleName = "foo" __import__(moduleName, globals(), locals(), ['*']) \uuuu import\uuuu()从不向本地范围添加任何内容。您必须遍历返回的模块,根据需要访问其属性。我找到的唯一方法是: mod

使用
\uuuu import\uuuu
执行以下操作的最佳方法是什么,以便动态指定模块

from module import *

这与正常的from导入调用相同,您只需为其传递一个列表,其中包含
fromlist
'*'

moduleName = "foo"
__import__(moduleName, globals(), locals(), ['*'])
\uuuu import\uuuu()
从不向本地范围添加任何内容。您必须遍历返回的模块,根据需要访问其属性。

我找到的唯一方法是:

module = __import__(module, globals(), locals(), ['*'])
for k in dir(module):
    locals()[k] = getattr(module, k)

但是你知道你应该避免使用
import*
?不是在这里进行语义学讲座:)你想在本地使用它吗?你不应该这样做,但迈克尔·莫罗泽克的答案无论如何都是完全错误的。Ignacio的回答应该被接受。但这实际上并没有设置局部变量(),这是我遇到的问题:)根据文档,标准的
\uuuuuu导入甚至没有使用
局部变量。如果覆盖
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
可以准确地看到从foo import*
运行
时发生的情况,它似乎。它将它们加载到内存中,但没有在当前模块locals()下设置它们。我完全忽略了globals(),locals()参数。现在有意义了(一年后:)你为什么要这样做?我闻到了坏代码的味道另一方面,请随意接受自己的答案。这似乎是快速完成任务的最佳选择。我发现的另一个选项是执行:“cmd=”来自%s导入*“%moduleName;exec(cmd)”。每个人都会尖叫,但对于小剧本来说,这似乎是最好的方式。