2017-01-23 49 views
2

特別是,我正在尋找一個包含功能組合的支持包。什麼是功能組合操作的「功能」包的替代方案?

Googling around,有很多對Collin Winter的功能和它的compose()函數的引用。然而,文件已經消失:http://www.oakwinter.com/code/functional/

這不會給我很大的信心,繼續支持。

一些參考文獻如https://mathieularose.com/function-composition-in-python/提供了相對簡單的手動實施。然而,除非絕對必要,否則我寧願選擇一個現有的社區圖書館,而不是重新實施這樣的基本操作。

+2

這就像4行。爲什麼*不*只是在需要時自己寫出來? – user2357112

+0

我可以。但是在項目中,我寧願不復制稍微不同的撰寫版本,其中一些由我編寫,其他人編寫,其他人使用我可能不知道的庫解決方案。 – daj

+0

由於似乎沒有什麼東西可以完全符合你的要求,而且你似乎明白這個問題,所以爲什麼不發佈你自己的?寫一個'compose',也許一些額外的功能,並把它貼在github上。 –

回答

1

我是toolz的忠實粉絲,在個人項目和工作中都使用它。它被積極維護,有據可查,儘管版本號爲0.x,但似乎已經相當成熟。

它提供了一個compose函數,可能是您正在尋找的。

例如:

from toolz import compose 

add_one = lambda x: x + 1 
square = lambda x: x**2 

# Add 1, then square 
compose(square, add_one)(2) # == 9