好的,我有两个文件filename1.py
和filename2.py
,它们都有一个同名funB
的函数。第三个文件process.py
具有从任一文件调用函数的函数。我似乎在努力调用正确的功能。
在process.py
:
from directoryA.filename1 import funB
from directoryA.filename2 import funB
def funA:
#do stuff to determine which filename and save it in variable named 'd'
d = 'filename2'
# here i want to call funB with *args based on what 'd' is
所以我尝试eval()
就像这样:
call_right_funB = eval(d.funB(*args))
但似乎没有用。
感谢任何帮助。
答案 0 :(得分:3)
问题是,你不能将eval()
与字符串和类似的方法结合使用。你写的是:
call_right_funB = eval('filename'.funB(*args))
你能做的是:
call_right_funB = eval(d + '.funB(*args)')
但这不是非常pythonic的方法。 我建议创建一个字典开关。即使您必须导入整个模块:
import directoryA.filename1
import directoryA.filename2
dic_switch = {1: directoryA.filename1, 2: directoryA.filename2}
switch_variable = 1
call_right_funB = dic_switch[switch_variable].funB(*args)
希望它有所帮助。