跳转到主要内容

简短且易读的类型化lambdas

项目描述

lambdas logo


Build Status codecov Documentation Status Python Version wemake-python-styleguide Telegram chat


在需要的地方编写简短且完全类型化的lambda

特性

  • 允许将lambda编写为_
  • 完全类型化,带有注解并通过mypy检查,PEP561兼容
  • 包含许多辅助函数以实现更好的组合
  • 易于开始:具有大量的文档、测试和教程

安装

pip install lambdas

您还需要正确配置mypy并安装我们的插件

# In setup.cfg or mypy.ini:
[mypy]
plugins =
  lambdas.contrib.mypy.lambdas_plugin

我们推荐使用我们使用的相同的mypy设置 我们使用

示例

想象一下,您需要按如下方式对字典数组进行排序

>>> scores = [
...     {'name': 'Nikita', 'score': 2},
...     {'name': 'Oleg', 'score': 1},
...     {'name': 'Pavel', 'score': 4},
... ]

>>> print(sorted(scores, key=lambda item: item['score']))
[{'name': 'Oleg', 'score': 1}, {'name': 'Nikita', 'score': 2}, {'name': 'Pavel', 'score': 4}]

它工作得很好。除了,您必须为此简单的操作进行大量的类型化。

这就是 lambda 辅助函数介入的地方

>>> from lambdas import _

>>> scores = [
...     {'name': 'Nikita', 'score': 2},
...     {'name': 'Oleg', 'score': 1},
...     {'name': 'Pavel', 'score': 4},
... ]

>>> print(sorted(scores, key=_['score']))
[{'name': 'Oleg', 'score': 1}, {'name': 'Nikita', 'score': 2}, {'name': 'Pavel', 'score': 4}]

当您使用很多 lambda 函数时,这可能会真正为您节省很多精力。例如,当使用 returns 库时。

我们可以轻松创建数学表达式

>>> from lambdas import _

>>> math_expression = _ * 2 + 1
>>> print(math_expression(10))
21
>>> complex_math_expression = 50 / (_ ** 2) * 2
>>> print(complex_math_expression(5))
100.0

工作进行中

  • 由于相同的原因,目前不支持 _.method()
  • TypedDict 未与 __getitem__ 进行测试
  • __getitem__ 无法与列表和元组(集合)一起使用,只与字典(映射)一起使用

目前您将不得不在这些情况下使用常规的 lambda

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

lambdas-0.2.0.tar.gz (5.7 kB 查看散列)

上传时间 源代码

构建分发

lambdas-0.2.0-py3-none-any.whl (6.6 kB 查看散列)

上传时间 Python 3

支持者