Python 如何根据输入参数和传递参数调用不同的函数
我有这样一个函数:Python 如何根据输入参数和传递参数调用不同的函数,python,Python,我有这样一个函数: def fog_create_user (i,j,k):pass def fog_delect_user ():pass def fog_update_user ():pass def fiqa (i.j.k):pass def single_match ():pass def batch_match ():pass def verify ():pass def create_user ():pass def delect_user ():pass def update_us
def fog_create_user (i,j,k):pass
def fog_delect_user ():pass
def fog_update_user ():pass
def fiqa (i.j.k):pass
def single_match ():pass
def batch_match ():pass
def verify ():pass
def create_user ():pass
def delect_user ():pass
def update_user():pass
def switch_function(input_key):
func_dict = {
"fog_create_user":fog_create_user,
"fog_delect_use":fog_delect_user,
"fog_update_user":fog_update_user,
"fiqa":fiqa,
"single_match":single_match,
"batch_match":batch_match,
"verify":verify,
"create_user":create_user,
"delect_user":delect_user,
"update_user":update_user
}
return func_dict.get(input_key)
我如何执行函数并传递参数,如input\u key='fiqa'exec fiqa(I,j.k)
尝试以下方法:
#take user input (assuming "fiqa")
function_name = "fiqa"
#returns the function
function_to_call = switch_function(function_name)
#call the function
function_to_call(i,j,k)
可以使用反射,如果将函数包装到类中,则可以使用该函数
getattr()
将函数作为字符串参数及其参数调用
class YourClass():
def __init__(self):pass
def fog_create_user (i,j,k):pass
def fog_delect_user ():pass
def fog_update_user ():pass
def fiqa (i.j.k):pass
def single_match ():pass
def batch_match ():pass
def verify ():pass
def create_user ():pass
def delect_user ():pass
def update_user():pass
def switch_function(input_key):
obj = YourClass()
for name in .__dict__.items() :
if type(name) == FunctionType:
getattr(obj, name)
注意:代码未经测试。也可以使用参数调用这些方法,需要进行额外的检查,或者将参数设置为类属性并为其提供默认值。您可以通过添加参数来内联调用函数
switch_function("fiqa")(1,2,3)
或者,如果您试图直接调用所需的函数,那么这可能就是您想要的
def exec_function(input_key, *params):
func_dict = {
"fog_create_user":fog_create_user,
"fog_delect_use":fog_delect_user,
"fog_update_user":fog_update_user,
"fiqa":fiqa,
"single_match":single_match,
"batch_match":batch_match,
"verify":verify,
"create_user":create_user,
"delect_user":delect_user,
"update_user":update_user
}
func = func_dict.get(input_key)
return func(*params)
exec_function("fiqa",4,5,6)
所需的功能=开关功能(“fiqa”);desired_func(i,j,k)这不是一个坏主意,但是这个答案在解释它时做得很糟糕,也许应该是一个注释。链接发送到解释。当然,也许一句评论就足够了,我会记住它,以备将来回复