大小: 65
說明:
|
← 2009-04-01 04:14:21 修訂第 7 版 ⇥
大小: 923
說明: converted to 1.6 markup
|
這個顏色代表刪除的 | 這個顏色代表增加的 |
行號 1: | 行號 1: |
在這裡編輯新頁面「Curry」 | Curry (aka partial function): Currying 是 functional programming 中把一個多參數的函式轉換成較少參數的函式的技巧。 Use "partial" in python2.5 {{{ >>> import functools >>> def add3(x,y,z): ... return x+y+z ... >>> curry = functools.partial >>> twoAdd2 = curry(add3,2) >>> twoAdd2(3,4) 9 >>> twoAddfiveAdd = curry(add3,2,5) >>> twoAddfiveAdd(3) 10 }}} |
行號 4: | 行號 20: |
implemented with lambda function (from: http://snippets.dzone.com/posts/show/2375): {{{ curry = lambda func, *args, **kw:\ lambda *p, **n:\ func(*args + p, **dict(kw.items() + n.items())) }}} Example: {{{ >>> def add3(x,y,z): ... return x+y+z ... >>> twoAdd2 = curry(add3,2) >>> twoAdd2(3,4) 9 >>> >>> twoAddfiveAdd = curry(add3,2,5) >>> twoAddfiveAdd(3) 10 }}} Other implementation: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52549 |
Curry (aka partial function): Currying 是 functional programming 中把一個多參數的函式轉換成較少參數的函式的技巧。
Use "partial" in python2.5
>>> import functools >>> def add3(x,y,z): ... return x+y+z ... >>> curry = functools.partial >>> twoAdd2 = curry(add3,2) >>> twoAdd2(3,4) 9 >>> twoAddfiveAdd = curry(add3,2,5) >>> twoAddfiveAdd(3) 10
implemented with lambda function (from: http://snippets.dzone.com/posts/show/2375):
curry = lambda func, *args, **kw:\ lambda *p, **n:\ func(*args + p, **dict(kw.items() + n.items()))
Example:
>>> def add3(x,y,z): ... return x+y+z ... >>> twoAdd2 = curry(add3,2) >>> twoAdd2(3,4) 9 >>> >>> twoAddfiveAdd = curry(add3,2,5) >>> twoAddfiveAdd(3) 10
Other implementation: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52549