2017-01-23 46 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