我对 Python 很陌生,并且一直在寻找一种方法来调用一个函数,该函数的名称由一个字符串和一个在用户选择其中一个选项时动态填充的变量组成。
例子:
我使用一个菜单启动程序,该菜单为用户提供某些选项(选择 1、2、3 或 4)
如果用户选择 1,变量 xyz 将填充一个元组或列表内部的字符串。
将此字符串分配给变量后,我调用另一个函数,它给了我另一个选项。
如果我得到选项 1,我的代码会将 xyz 变量附加到一个预定义的字符串,该字符串将形成一个函数名(接下来将调用的那个。)。
if int(option) == 1:
#prefixfunc will be that predefined string that will be the prefix for every function #to be called
exec('prefixfunc'+xyz'()')
#or
#eval('prefixfunc_'+xyz'()')
#for example, we have xyz as abc, then it calls function prefixfunc_abc()
它在代码中运行良好。而且我不认为这可能是用户添加不同输入的情况的责任。由于变量是通过使用列表或元组中已定义的字符串来分配的。
我希望我已经说清楚了。
只是为了更清楚:
def maint_car():
print('It Works!!! But did you come until here in a safe way?' )
def veh_func():
func=( "Maintenance", "Prices", "Back", "Quit" )
ord = 0
for i in func:
ord += 1
print(ord,'\b)', i)
picked = input('\nOption: ')
if int(picked) == 1:
exec('maint_'+xyz+'()')
def startprog():
abcd =( "car", "bike", "airplane", "Quit" )
global xyz
ord = 0
for i in abcd:
ord += 1
print(ord,'\b)', i)
picked = input('\nVehicle:')
if int(picked) == 1:
xyz = abcd[0]
veh_func()
elif int(picked) == 2:
xyz = abcd[1]
veh_func()
elif int(picked) == 3:
xyz = abcd[3]
veh_func()
elif int(picked) == 4:
print('\nBye.\n')
startprog()