函数的partial应用
函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
例子
代码如下 | 复制代码 |
>> from operator import add, mul >>> from functools import partial >>> add1 = partial(add, 1) # add1(x) == add(1, x) >>> mul100 = partial(mul, 100) # mul100(x) == mul(100, x) >>> >>> add1(10) 11 >>> add1(1) 2 >>> mul100(10) 1000 >>> mul100(500) |
有些时候这样的操作让我们能够更加清晰的展示我们的程序
例如:
代码如下 | 复制代码 |
In [9]: from functools import partial In [10]: def add(a,b): In [11]: add(4,3) In [12]: plus = partial(add,100) In [13]: plus(9) In [14]: plus2 = partial(add,99) In [15]: plus2(9) |
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。
如果有默认参数的话,他们也可以自动对应上,例如:
代码如下 | 复制代码 |
In [17]: def add2(a,b,c=2): ....: return a+b+c ....: In [18]: plus3 = partail(add,101) NameError: name 'partail' is not defined In [19]: plus3 = partial(add,101) In [20]: plus3(1) In [21]: plus3 = partial(add2,101) In [22]: plus3 = partial(add2,101) (1) In [23]: plus3(1) In [24]: plus3(1,2) In [25]: plus3(1,3) In [26]: plus3(1,30) partial改变方法默认参数 #!/usr/bin/env python |
这样如果我们使用一个方法总是需要默认几个参数的话就可以,先做一个封装然后不用每次都设置相同的参数了。