我想使用 functools 中的部分来部分应用函数的第二个参数,我知道使用 lambda 而不是部分很容易,如下所示
>>> def func1(a,b):
... return a/b
...
>>> func2 = lambda x:func1(x,2)
>>> func2(4)
2
但我严格想在这里使用部分(为了学习)所以我想出了这个。
>>> def swap_binary_args(func):
... return lambda x,y: func(y,x)
...
>>> func3 = partial(swap_binary_args(func1),2)
>>> func3(4)
2
是否可以将此策略扩展到可以在任何地方部分应用任何参数的级别,如以下伪代码所示
>>>def indexed_partial(func, list_of_index, *args):
... ###do_something###
... return partially_applied_function
>>>func5=indexed_partial(func1, [1,4,3,5], 2,4,5,6)
在我们的例子中,我可以按如下方式使用这个函数
>>>func6=indexed_partial(func1, [1], 2)
是否可以有像我想要的索引部分?有没有类似的事情我不知道?更重要的是,索引部分的想法通常是好还是坏,为什么?
该问题已被标记为可能重复可以部分应用不带关键字参数的函数的第二个参数吗? https://stackoverflow.com/questions/11173660在这个问题中,OP问是否可以部分应用第二个参数,但在这里我问如何烹饪一个可以部分应用任何任意参数的函数