【Python】functools模块partial方法
xixuefeng
Python
2018-03-18 23:15:16
978 次浏览
functools, partial
【Python】functools模块partial方法已关闭评论
语法:
1 |
functools.partial(func, *args, **keywords) |
看到参数中有 *args, **keywords,说明传入的参数是比较灵活的。
当一个函数有多个参数,在使用时,可以先传入部分参数,然后partial对象就可以将这些不变的对象冻结起来,这样调用partial对象时再传入未冻结的参数
例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
## 引用funtools模块 >>> from functools import * ## 定义一个函数,两个参数相加返回结果 >>> def add(a,b): ... return a + b ... >>> ## 可以理解重新再构造了个函数add1,其中,传入的参数1已经在add函数中暂时“冻结”,等待另一个参数的到来 >>> add1 = partial(add,1) >>> ## 调用这个函数add1,传入一个参数7,与“冻结”的参数1进行相加,返回结果 >>> print (add1(7)) 8 >>> >>> print (add1(100)) 101 >>> |
例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
>>> from functools import partial >>> >>> def add(a, b, c): ... return a + b + c ... >>> ## 多个参数,我们尝试“冻结”多次 >>> foo1 = partial(add,10) >>> foo2 = partial(foo1,20) >>> print (foo2(30)) 60 >>> >>> print (foo1(20,50)) 80 >>> |