Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据输入参数和传递参数调用不同的函数_Python - Fatal编程技术网

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)这不是一个坏主意,但是这个答案在解释它时做得很糟糕,也许应该是一个注释。链接发送到解释。当然,也许一句评论就足够了,我会记住它,以备将来回复