file1.py
def foo(x):
print(x)
file2.py
def foo(x):
print(x)
main.py
import file1
import file2
#User inputs either file1 or file2
variable = input()
#--
#TODO: A way to call the correct module so either file1.foo('test') or file2.foo('test')
#--
代码解释了我想要实现的目标,但我找不到解决问题的方法,我一直在寻找几个小时。也许我只是找错了地方或找错了关键字。大多数在线解决方案都是针对相反问题的解决方案。(常量模块,可变功能(
请记住,这是我实际代码的简化版本。在这个例子中,我可以用 if 语句来解决它,但在我的实际项目中,我有大约 30 个可能的模块可以调用,所以用 if 语句修复它并不整洁。
提前感谢!
也许你正在寻找__import__
?
file = __import__(input())
file.foo()
没有__import__
的方法是使用字典:
import file1
import file2
modules = {'file1': file1,
'file2': file2}
modules[input()].foo()
您可以使用额外的foo
变量,该变量根据输入引用file1.foo
或file2.foo
,然后稍后调用foo
:
if variable == 'file1':
foo = file1.foo
else:
foo = file2.foo
foo('test')
在多个模块的情况下,您可以使用importlib.import_module
import importlib
mod = importlib.import_module(variable)
mod.foo('test')