跳转到主要内容

functionalpy

项目描述

FunctionalPy

Open in Dev Container PyPI Python Version Tests

ALPHA:API可能会在未经通知的情况下发生重大变化。

Python已将mapfilter等实现为函数,而不是序列上的方法。这使得结果更难阅读,迭代器不如可能的使用频率高。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

  1. 安装 Orbstack 或 Docker Desktop。在继续之前,请确保完成完整的安装过程。
  2. 如果没有安装,请安装 VSCode
  3. 点击此 链接
  4. 完成设置过程
  5. 完成!就像那样简单。

💬 哪里可以提问

类型
🚨 错误报告 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 查看哈希值)

上传时间 Python 3

由以下机构支持