我有不同的功能,但每个都有不同数量的参数和不同的参数.我希望能够只执行其中一个,并根据函数的名称作为字符串执行此操作.我试过这个:
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的新手).非常感谢你提前!:)
您只需要将函数添加到字典中; 你添加了他们的结果.
要支持变量参数,请使用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)
在这两种情况下,您都可以在从字典中检索结果对象(partial或lambda函数)之后调用它.
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |