从变量模块调用函数是否可行?

24 浏览
0 Comments

从变量模块调用函数是否可行?

文件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提前感谢!

0
0 Comments

有时候我们需要根据不同的输入来调用相应的函数,但是在有多个模块的情况下,使用if语句来比较所有模块将会变得非常冗长。解决这个问题的方法是使用importlib模块。

在上述示例中,可以使用一个额外的变量foo,根据输入的值来引用file1.foo或file2.foo,并在后面调用foo函数。

如果有多个模块,可以使用importlib模块来解决这个问题。通过importlib.import_module函数来动态导入模块,然后调用相应的函数。

在实际项目中,有大约30个可能被调用的模块,使用if语句来比较所有模块将会变得非常冗长。这种情况下,可以使用importlib模块来解决这个问题。

importlib模块似乎是一个很好的解决方案。

通过以上方法,我们可以根据输入的值来调用相应的函数,而不需要使用冗长的if语句来比较所有模块。这样可以使代码更加简洁和可读性更强。

0
0 Comments

问题的原因是想要通过变量模块调用函数。解决方法有两种:

一种方法是使用__import__函数。具体代码如下:

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

另一种方法是使用字典。首先导入需要使用的模块,然后将其存储在字典中。具体代码如下:

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

除非你确切知道自己在做什么,否则我建议避免使用__import__importlib,因为通常有更简洁、更少出错的方法来实现相同的目标。

希望以上内容能够解决你的问题,感谢你的提问!

0