Python根据variab触发特定函数

2024-03-29 12:03:45 发布

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

假设我有一个main.py和26个附加的Python文件,从a.py到Z.py。
这26个文件都包含一个名为functionA()、functionB()…functionZ()的函数 我有一个变量,我们称之为“var”,并根据变量启动正确的函数。 现在,我的main.py代码如下所示:

from A import functionA
from B import functionB
.
.
.
from Z import functionZ

var = "N";

if var == "A":
  functionA()
elif var == "B":
  functionB()
.
.
.
elif var == "Z":
 functionZ()

然而,实际的代码不会只有26个函数,而是超过100个。
我听说如果..elif..elif比switch var:更高效。 但是,有没有任何方法可以根据变量触发functionvar(),而不逐个遍历所有变量?如果不是的话,如果…以利…以利…否则是最有效的方法吗


Tags: 文件方法函数代码frompyimportif
2条回答

您可以使用:

locals()['function'+var]()

如果必须遵循此结构,可以使用importlib。它不是很透明,但是只需要少量的行就可以实现所需的功能,并且不需要在文件顶部进行所有导入

import importlib

var = 'A'

module = importlib.import_module(var)  # imports module A

f_name = f"function{var}"  # = 'functionA'

f_to_call = getattr(module, f_name)  # the function as a callable

result = f_to_call()  # calls A.functionA()

相关问题 更多 >