我想要这样的东西:
import Variant
x = Variant.Pop1
from x import mid
这可能吗?
我不知道它是否会对您有帮助,但是您可以考虑使用importlib
模块:它允许进行动态导入,例如:
from importlib import import_module
module_names = ["Pop1", "Pop2", ...]
def foo():
for name in module_names:
module = import_module(name, "Variant")
module.mid(...)
是,但这不是如何导入模块的好例子,这是一个不好的做法。
这正是您想要做的,但是更好。
from Variant.Pop1 import mid as x
def my_func(var):
# do something
my_func(x)
示例:
from random import choice as x
my_list = [1, 2, 3, 4]
def my_func(var):
return var(my_list)
print(my_func(x))
要从变量名导入模块,请使用importlib
(see python docs)
例如:
import importlib
import os.path as p
x = p.__name__
q = importlib.import_module(x)
当然,此示例很愚蠢,因为q最终以与p相同的值结尾,但是它演示了语法。如果这不是您想要的,请提供更多详细信息。
另一个选择是使用exec,如this other post中所述>
您可以使用importlib
。导入规范类似于使用“。”的目录结构。逐步浏览模块名称。模块将其“目录名称”保留在__package__
中。因此,