我需要定义两个阶段调用的函数。 第一阶段仅设置参数的子集,第二阶段使用一些其他参数运行该函数。
我不知道该问题的标题。
当前,我正在通过定义三个函数来实现此目的。 第一个函数返回一个已设置参数的新函数。 之后,调用返回的函数实际上将调用最终函数。
当前解决方案如下:
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
我想在这里减少样板并提供更紧凑的版本。
有没有更好/更短的解决方案?
答案 0 :(得分:3)
我认为您只是在寻找部分函数应用程序;从某种意义上说,您的el.inputTimeF
是my_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")
在内部函数中,所有参数都绑定到正确的值。
它可以根据需要嵌套,只记得返回定义的函数。