可以从变量模块调用函数吗?

2024-03-29 02:37:34 发布

您现在位置:Python中文网/ 问答频道 /正文

文件1.py

def foo(x):
    print(x)

文件2.py

def foo(x):
    print(x)

你知道吗主.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语句来解决这个问题并不合适。你知道吗

提前谢谢!你知道吗


Tags: or文件代码pytestimportiffoo
2条回答

您可以使用另一个foo变量,根据输入引用file1.foofile2.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')

也许你在找__import__?你知道吗

file = __import__(input())
file.foo()

没有__import__的方法是使用字典:

import file1
import file2

modules = {'file1': file1,
           'file2': file2}
modules[input()].foo()

相关问题 更多 >