跳转到主要内容

快速高效的lambda函数。

项目描述

快速高效的lambda函数。

什么是fz

fz为Python 3提供了一种更优雅的方式来定义lambda函数。语法灵感来自C++ std::bind、Scala lambda和quicklambda for python。

语法

fz lambda使用占位符对象来表示新lambda的参数。占位符看起来像:_1_2、……,一直到_255(函数的最大位置参数数)。

要创建一个lambda,只需使用这些占位符构建一个表达式,其中包含您希望参数出现的位置。

示例用途

简单算术

许多lambda仅仅是简单的算术。例如

>>> from fz import _1
>>> f = _1 + 1
>>> f(1)
2
>>> f(3)
4
>>> (_1 * 2)(3)
6
>>> (_1 ** 2)(3)
9
>>> list(map(_1 ** 2, range(5)))
[0, 1, 4, 9, 16]

属性和项目访问

>>> from fz import _1

>>> _1[0]([1, 2])
1
>>> list(map(_1[1], [(0, 1), (2, 3), (4, 5)]))
[1, 3, 5]
>>> _1.imag(1j)
1.0
>>> list(map(_1.imag, (1j, 1 + 2j, 2 + 3j)))
[1, 2, 3]

函数调用

因为我们只能自顶向下包装,我们必须明确地包装一个将被延迟的函数。

>>> from fz import _f, _1, _2, _3
>>> def f(a, b):
...     return a + b
>>> _f(f)(_1, _2)(1, 2)
3
>>> g = _f(f)(_1, -1)
>>> g(1)
0

>>> flip = _f(_1)(_3, _2)
>>> flip(print, 1, 2)
2 1

支持的操作

  • 二元运算符

  • 一元运算符

  • 属性访问(某些名称用于实现)

  • 索引(项目访问)

  • iter

  • next

  • abs

许可协议

fz是免费软件,许可协议为GNU通用公共许可证,版本2。更多信息请参阅LICENSE文件。

源代码

源代码托管在github上,网址为https://github.com/llllllllll/fz

项目详情


下载文件

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

源代码分发

fz-0.1.1.tar.gz (5.5 kB 查看哈希值)

上传时间 源代码

支持