Python@TW: 會眾| IRC| Planet| 郵件列表| 聯絡我們

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


CategoryCookbook

Curry (上次是 localhost 在 2009-04-01 04:14:21 編輯的)