Python 3.x 使用字典中的参数调用python函数

Python 3.x 使用字典中的参数调用python函数,python-3.x,function,dictionary,arguments,call,Python 3.x,Function,Dictionary,Arguments,Call,我在我的脚本中有一个位置,我要求用户提供一些反馈(选择脚本中的下一个阶段),由于有大量的项目,用户正在根据我将“if-else”部分打包到字典中来做出决定。我可以调用任何“普通”函数,但在很多情况下,我必须调用同一个函数,但带有一些参数,但无法确定如何将这些参数添加到我已经拥有的脚本主体中。看起来是这样的(我将尝试对其进行评论,以便您看到我的问题所在): 谢谢,非常感谢您的帮助。答案很简单-对于需要添加参数的参数,我将其值称为lambda。。。像这样: # say func 2 holds 3

我在我的脚本中有一个位置,我要求用户提供一些反馈(选择脚本中的下一个阶段),由于有大量的项目,用户正在根据我将“if-else”部分打包到字典中来做出决定。我可以调用任何“普通”函数,但在很多情况下,我必须调用同一个函数,但带有一些参数,但无法确定如何将这些参数添加到我已经拥有的脚本主体中。看起来是这样的(我将尝试对其进行评论,以便您看到我的问题所在):


谢谢,非常感谢您的帮助。

答案很简单-对于需要添加参数的参数,我将其值称为lambda。。。像这样:

# say func 2 holds 3 arguments
options = {
    '1': func1,
    '2': lambda: func2(arg1, arg2, arg3),
    '3': func3,
    'etc': funcetc,
    'n': funcn}

这是一个非常简单的解决方案,functools模块为您提供了操作函数的方法,包括允许您将参数部分传递给函数,例如:

import functools
options = {
    ...
    '2': functools.partial(fn, arg1, arg2, arg3)
    ...
}

看来我终于找到了解决办法:我不知道,谢谢。我还在学习,functools甚至不在我的列表“现在需要知道”中:-)实际上不是比lambda解决方案更好吗?(无需导入,语法更简单)
import functools
options = {
    ...
    '2': functools.partial(fn, arg1, arg2, arg3)
    ...
}