Python中的函数柯里化
2013-07-19 18:10
176 查看
Python中的函数柯里化
为单个值,而柯里化能通过泛化出很多个函数,每个函数用
不同的固定值,来看一下 应用场景 :
经过柯里化之后,可以用如下方式调用:
将多个只含单个参数的函数模拟成一个多参数函数。
那么反柯里化有什么用?
一些函数式编程语言,就是利用反柯里化来实现多参数函数。
至于还能用在什么地方,本人也不知道,只是作为兴趣了解一下。
1 柯里化(Currying)
一个函数有多个参数,我们希望能固定其中几个参数的值。from functools import partial def foo(a,b,c): return a+b+c foo2 = partial(foo, b=2) foo2(a=1, c=3) #=>6看上去这跟提供参数默认值的情况类似。但默认值只能固定
为单个值,而柯里化能通过泛化出很多个函数,每个函数用
不同的固定值,来看一下 应用场景 :
from functools import partial bin2dec = partial(int, base=2) hex2dec = partial(int, base=16)原int方法的定义为:int( x[, base]),base参数的默认为10
经过柯里化之后,可以用如下方式调用:
int('15') #=>15 using default base 10 bin2dec('01011') #=>11 hex2dec('67') #=>103
2 反柯里化(Uncurrying)
顾名思义,柯里化的逆过程。将多个只含单个参数的函数模拟成一个多参数函数。
def foo(a): def bar(b): return a+b return bar你可以像这样调用:foo(1)(4)或(foo(1))(4),都能得到正确的结果5。
那么反柯里化有什么用?
一些函数式编程语言,就是利用反柯里化来实现多参数函数。
至于还能用在什么地方,本人也不知道,只是作为兴趣了解一下。
相关文章推荐
- Python 的join函数
- 【290】Python 函数
- python 函数参数
- 习题35,36分支与函数,设计和调试,笨方法学python,中文版游戏
- Python random模块常用函数
- 【Python学习日记】函数列表 动态创建函数 文件读取 迭代器
- 关于python函数参数
- python函数详解
- python strip()函数
- python 中 logging 模块的 log 函数以及坑
- python中带下划线的变量和函数
- 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”
- Python-Day3 Python基础进阶之集和/文件读写/函数
- python: strip()函数
- python深入(函数,文件操作)
- python基础之三——函数
- python中的globals()和locals()函数
- Python命令行里一些入门的函数
- Python中的join()函数的用法
- python中函数传值与传引用