快速高效的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。