具有两个阶段的功能来定义参数

时间:2019-05-21 13:55:42

标签: python python-3.x function

我需要定义两个阶段调用的函数。 第一阶段仅设置参数的子集,第二阶段使用一些其他参数运行该函数。

我不知道该问题的标题。

当前,我正在通过定义三个函数来实现此目的。 第一个函数返回一个已设置参数的新函数。 之后,调用返回的函数实际上将调用最终函数。

当前解决方案如下:

def my_function(stage1_param1, stage1_param2):
    return lambda stage2_param1, stage2_param2: my_function_op(stage1_param1, stage1_param2, stage2_param1, stage2_param2)

def my_function_op(stage1_param1, stage1_param2, stage2_param1, stage2_param2):
    # do stuff

我想在这里减少样板并提供更紧凑的版本。

有没有更好/更短的解决方案?

2 个答案:

答案 0 :(得分:3)

我认为您只是在寻找部分函数应用程序;从某种意义上说,您的el.inputTimeFmy_function的专门实现。

functools.partial

答案 1 :(得分:-1)

您可以在一个函数中定义一个函数:

def my_function(stage1_param1, stage1_param2):
    def stage2(stage2_param1, stage2_param2):
        ...  # do stuff
    return stage2

然后您可以像这样使用my_function

>>> f = my_function("foo", "bar")
>>> f("ham", "spam")

在内部函数中,所有参数都绑定到正确的值。

它可以根据需要嵌套,只记得返回定义的函数。