functionalpy
项目描述
FunctionalPy
ALPHA:API可能会在未经通知的情况下发生重大变化。
Python已将map
、filter
等实现为函数,而不是序列上的方法。这使得结果更难阅读,迭代器不如可能的使用频率高。FunctionalPy旨在改变这一点。
您将获得这个 🔥
result = (Seq([1,2,3])
.map(multiply_by_2)
.filter(is_even))
而不是这个
sequence = [1,2,3]
multiplied = [multiply_by_2(x) for x in sequence]
result = [x for x in multiplied if is_even(x)]
或者这个
result = filter(is_even, map(multiply_by_2, [1,2,3]))
安装
pip install functionalpy
用法
from functionalpy import Seq
result = (Seq([1, 2])
.filter(lambda x: x % 2 == 0)
.map(lambda x: x * 2)
.to_list()
)
assert result == [4]
先前的艺术
FunctionalPy站在Scala、Rust等之上。
其他Python项目也有类似的想法
- PyFunctional已存在7年以上,功能全面。它性能良好,内置了 lineage 和缓存。遗憾的是,这使得类型化 变得复杂,需要4年以上的努力来添加类型。
- flupy非常相似,类型良好且成熟。我在
.flatten()
没有正确类型提示方面有一些问题,但在这个成熟度级别上,flupy
可能是一个更好的库。 - 您的库在这里?如果您有更好的替代方案,请随意提出问题!
贡献
约定
哲学
- 使其工作:从Scala、Rust等借用简洁的语法。
- 使其正确:完全类型化,无异常
- 使其快速
- 通过
.pmap
进行并发 - (未来):缓存
- (未来):重构操作以使用生成器
- 通过
- 保持简单:无依赖项
API设计
作为一个启发式方法,我们遵循
在与此处发生冲突的情况下,API应尽可能预测Python用户的典型实现。
Devcontainer
💬 哪里可以提问
类型 | |
---|---|
🚨 错误报告 | GitHub Issue Tracker |
🎁 功能请求与想法 | GitHub Issue Tracker |
👩💻 使用问题 | GitHub Discussions |
🗯 一般讨论 | GitHub Discussions |
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
functionalpy-0.17.0.tar.gz (30.6 kB 查看哈希值)
构建分发
functionalpy-0.17.0-py3-none-any.whl (10.7 kB 查看哈希值)
关闭
functionalpy-0.17.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 043b5a29eac96759118b35be146354479e1d9f0e2341aae11e5d44f369e38ce2 |
|
MD5 | 60a5f98d92720e2f19c8a76c8990013d |
|
BLAKE2b-256 | ec17d65c5cbdf83ab7debf3c9c8bf17a2d02371fa45ed851b8a69671d62096fd |
关闭
functionalpy-0.17.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b4d53478890f20ac6efb45336196665de049f3f589cd9fa2c5bab15142cfe07 |
|
MD5 | ef3d0e474e9052ea217846a52abde890 |
|
BLAKE2b-256 | ae57c5cee2fb339f09f1d5562ce1ea23df8065564c82ea1f6eeb9dcefa4b5ff9 |