partial 函数
2016-05-22 15:26
232 查看
函数的partial应用
函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
例如:
In [9]: from functools import partial
In [10]: def add(a,b):
....: return a+b
....:
In [11]: add(4,3)
Out[11]: 7
In [12]: plus = partial(add,100)
In [13]: plus(9)
Out[13]: 109
In [14]: plus2 = partial(add,99)
In [15]: plus2(9)
Out[15]: 108
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。
如果有默认参数的话,他们也可以自动对应上,例如:
In [17]: def add2(a,b,c=2):
....: return a+b+c
....:
In [18]: plus3 = partail(add,101)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/yupeng/Documents/PhantomJS/<ipython-input-18-d4b7c6a6855d> in <module>()
----> 1 plus3 = partail(add,101)
NameError: name 'partail' is not defined
In [19]: plus3 = partial(add,101)
In [20]: plus3(1)
Out[20]: 102
In [21]: plus3 = partial(add2,101)
In [22]: plus3 = partial(add2,101) (1)
Out[22]: 104
In [23]: plus3(1)
Out[23]: 104
In [24]: plus3(1,2)
Out[24]: 104
In [25]: plus3(1,3)
Out[25]: 105
In [26]: plus3(1,30)
Out[26]: 132
函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
例如:
In [9]: from functools import partial
In [10]: def add(a,b):
....: return a+b
....:
In [11]: add(4,3)
Out[11]: 7
In [12]: plus = partial(add,100)
In [13]: plus(9)
Out[13]: 109
In [14]: plus2 = partial(add,99)
In [15]: plus2(9)
Out[15]: 108
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。
如果有默认参数的话,他们也可以自动对应上,例如:
In [17]: def add2(a,b,c=2):
....: return a+b+c
....:
In [18]: plus3 = partail(add,101)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/yupeng/Documents/PhantomJS/<ipython-input-18-d4b7c6a6855d> in <module>()
----> 1 plus3 = partail(add,101)
NameError: name 'partail' is not defined
In [19]: plus3 = partial(add,101)
In [20]: plus3(1)
Out[20]: 102
In [21]: plus3 = partial(add2,101)
In [22]: plus3 = partial(add2,101) (1)
Out[22]: 104
In [23]: plus3(1)
Out[23]: 104
In [24]: plus3(1,2)
Out[24]: 104
In [25]: plus3(1,3)
Out[25]: 105
In [26]: plus3(1,30)
Out[26]: 132
相关文章推荐
- Coverity 静态分析 VS Code Review 代码审查
- C#—实验8.4、8.5和8.6
- 一个改进造成的血案
- 优化for循环效率
- const_cast与mutable
- 1501 二叉树最大宽度和高度
- 【一周读书】一点营养学笔记
- 十大可以代替伟哥的男性食物
- cmd中javac 和 java的用法
- 稀疏矩阵的列序递增法和一次定位快速转置法
- 线段树
- tslib编译与安装
- Java8 Stream 初探(一)
- 001学习之前必读
- apach服务器使用以及设置
- 【数据结构】构造二叉树的三种方法
- 『eclipse使用技巧之一』当鼠标放到类或方法上,显示或隐藏类或方法的介绍
- 3718: [PA2014]Parking 树状数组
- nginx支持flv点播回放
- 常用数据结构汇总