根据参数 - 名称选择要执行的功能

Fae*_*ery 3 python python-3.3

我有不同的功能,但每个都有不同数量的参数和不同的参数.我希望能够只执行其中一个,并根据函数的名称作为字符串执行此操作.我试过这个:

def execute_function(function_name, arg1, arg2, arg3):
    return {
        'func1': func1(arg1),
        'func2': func2(arg1, arg3),
        'func3': func3(arg2),
    }[function_name]
Run Code Online (Sandbox Code Playgroud)

但它执行所有功能:(无论什么是字符串function_name.

你有任何想法为什么会这样,以及如何实现我想要的.(我是Python的新手).非常感谢你提前!:)

Mar*_*ers 6

您只需要将函数添加到字典中; 你添加了他们的结果.

要支持变量参数,请使用lambdas或functools.partial()包装函数:

def execute_function(function_name, arg1, arg2, arg3):
    return {
        'func1': lambda: func1(arg1),
        'func2': lambda: func2(arg1, arg3),
        'func3': lambda: func3(arg2),
    }[function_name]()
Run Code Online (Sandbox Code Playgroud)

要么

from functools import partial

def execute_function(function_name, arg1, arg2, arg3):
    return {
        'func1': partial(func1, arg1),
        'func2': partial(func2, arg1, arg3),
        'func3': partial(func3, arg2),
    }[function_name]()
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,您都可以从字典中检索结果对象(partiallambda函数)之后调用它.