将模块传递到python中的变量中

问题描述 投票:-1回答:3

我想要这样的东西:

import Variant
x = Variant.Pop1
from x import mid

这可能吗?

python
3个回答
1
投票

我不知道它是否会对您有帮助,但是您可以考虑使用importlib模块:它允许进行动态导入,例如:

from importlib import import_module

module_names = ["Pop1", "Pop2", ...]

def foo():
    for name in module_names:
        module = import_module(name, "Variant")
        module.mid(...)


0
投票

是,但这不是如何导入模块的好例子,这是一个不好的做法。

这正是您想要做的,但是更好。

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))

0
投票

要从变量名导入模块,请使用importlibsee python docs

例如:

import importlib
import os.path as p
x = p.__name__
q = importlib.import_module(x)

当然,此示例很愚蠢,因为q最终以与p相同的值结尾,但是它演示了语法。如果这不是您想要的,请提供更多详细信息。

另一个选择是使用exec,如this other post中所述>


0
投票

您可以使用importlib。导入规范类似于使用“。”的目录结构。逐步浏览模块名称。模块将其“目录名称”保留在__package__中。因此,

© www.soinside.com 2019 - 2024. All rights reserved.