Python中更直观的部分函数应用程序

2022-02-21 09:22:48

我找到了一些工具。部分不直观,所以我编了一个更好的版本。让';我们来玩玩吧。您可以将其作为装饰器应用于您的功能:

表面上没有什么真正的改变。某些_操作在传递值时的行为与普通函数类似

但在幕后,我的局部装饰师正在发挥各种魔力。想象一下,你需要把一个x函数传递给代码库的另一部分,而一些_操作,特别设置为p1=10和p2=20,符合要求。为了实现这一目标,你';我必须像这样包装一些_操作:

英国石油公司。部分装饰使这一点更好。通过提供bp我们可以生成一个新函数,其中变量被bp替换省略了:

@英国石油公司。部分定义f(a,b,c,d,e):返回a+b+c+d+e g=f(bp.u,0,bp.u,0,bp.u)g(1,3,5)35;-->;1 + 0 + 3 + 0 + 5

这些部分应用程序生成的函数还支持进一步的部分应用程序。考虑再次使用上面的G:

h=g(1,bp.u,bp.)h(3,5)#-->;1 + 0 + 3 + 0 + 5

如果您想省略一些参数并指定其余的参数,这很好,但是如果它';反过来呢?您只需要修复几个参数的值。最好让你这样做。从上面考虑f,假设我们要修复C=5和A=7,你也可以这样做:

g=f(…,c=5,a=7)g(0,0,0)#-->;7+0+5+0+0g(0,0,0)=f(7,0,5,0,0)==f(7,0,5,5,5,5,5,0,0,0)bp.u0,0,0,0)0-->;符合事实的

better_partial允许您使用。。。sentenel表示您只想指定以下内容的值。

了解分部运算符的灵活性和强大功能的一个简单方法是查看使用它计算函数的各种方法。使用上面f的定义,以下所有行都是等效的:

f(1,2,3,4,5)f(bp.,2,bp.,4,bp.)(1,3,5)f(…,b=2,d=4)(1,3,5)f(…,b=2,d=4)(1,bp.,5)(3)f(…,b=2,d=4)(…,c=3)(1,5)