从变量模块调用函数是否可行?
从变量模块调用函数是否可行?
文件1.py\n
def foo(x): print(x)
\n文件2.py\n
def foo(x): print(x)
\n主文件.py\n
import 文件1 import 文件2 #用户输入文件1或文件2 变量 = input() #-- #TODO: 一种调用正确模块的方法,要么是文件1.foo('测试'),要么是文件2.foo('测试') #--
\n这段代码解释了我想要实现的目标,但是我找不到解决问题的方法,我已经找了几个小时。也许我只是在错误的地方寻找,或者用了错误的关键词进行搜索。大部分在线解决方案都是相反的问题。(常数模块,变量函数)请记住,这只是我的实际代码的简化版本。在这个例子中,我可以通过if语句来解决,但是在我的实际项目中,我有大约30个可能被调用的模块,所以用if语句来解决不会整洁。\n提前感谢!
有时候我们需要根据不同的输入来调用相应的函数,但是在有多个模块的情况下,使用if语句来比较所有模块将会变得非常冗长。解决这个问题的方法是使用importlib模块。
在上述示例中,可以使用一个额外的变量foo,根据输入的值来引用file1.foo或file2.foo,并在后面调用foo函数。
如果有多个模块,可以使用importlib模块来解决这个问题。通过importlib.import_module函数来动态导入模块,然后调用相应的函数。
在实际项目中,有大约30个可能被调用的模块,使用if语句来比较所有模块将会变得非常冗长。这种情况下,可以使用importlib模块来解决这个问题。
importlib模块似乎是一个很好的解决方案。
通过以上方法,我们可以根据输入的值来调用相应的函数,而不需要使用冗长的if语句来比较所有模块。这样可以使代码更加简洁和可读性更强。
问题的原因是想要通过变量模块调用函数。解决方法有两种:
一种方法是使用__import__
函数。具体代码如下:
file = __import__(input()) file.foo()
另一种方法是使用字典。首先导入需要使用的模块,然后将其存储在字典中。具体代码如下:
import file1 import file2 modules = {'file1': file1, 'file2': file2} modules[input()].foo()
除非你确切知道自己在做什么,否则我建议避免使用__import__
或importlib
,因为通常有更简洁、更少出错的方法来实现相同的目标。
希望以上内容能够解决你的问题,感谢你的提问!