带有占位符表示法和代码生成的隐式lambda
blackhc.implicit-lambda的Python项目详细描述
#隐式lambdas
[![构建状态](https://www.travis-ci.com/blackhc/implicit_lambda.svg?branch=master)(https://www.travis-ci.com/blackhc/implicit_lambda)[![codecov](https://codecov.io/gh/blackhc/implicit_lambda/branch/master/graph/badge.svg)(https://codecov.io/gh/blackhc/implicit_lambda)[![PYPI](https://img.shields.io/badge/pypi blackhc.implicit戋lambda-blue.svg)(https://pypi.python.org/pypi/blackhc.implicit戋lambda/)
此包添加了对隐式lambda的支持,因此您可以编写"map(戋+5,a戋list)",而不是"map(lambda x:x+5,a戋list)"。
3.7简洁的特点。这个包可以很容易地与早期版本一起使用。如果需要,请提交问题。
隐式lambda是使用代码生成实现的。当运行带有"-o"的python以启用优化时,它们的速度与常规lambda一样快。
```
——ps/s)
------------------------------------------------------------
测试正常λ196.3468(1.01)140.7775(2.32)166.9600(1.0)5.0930(0.99)
测试λ196.6705(1.01)113.9049(1.88)171.6000(1.03)5.0846(0.99)
测试操作链195.0673(1.0)60.6268(1.0)176.2300(1.06)5.1264(1.0)
——`普通lambda使用普通lambda。`操作链使用functools.partial和operator模块。
遗产。(动态创建一个新类型来保存表达式,使用自定义的"调用"解析调用就足以招致这样的惩罚。)
`(使用"getitem",成员访问(使用"getattribute",成员访问)和任何调用(调用)。这会带来很大的灵活性。
要消除lambda内的调用和调用lambda之间的歧义,隐式lambda必须显式转换为可调用/规则的python lambda。
`to_lambda`将隐式lambda表达式转换为python lambda。
`auto_lambda `将对隐式lambda的支持添加到接受可调用的现有函数中。
```
要运行测试,请使用:
````
python setup.py test
````
`其他的助手函数不需要调用。
`` python
来自blackhc.implicit_lambda import_x,y,to_lambda
来自blackhc.implicit_lambda.builtins import map
````
implicit lambda为所有常见的内置提供包装器。
`` python
a_list=list(range(10))
````
包装函数提供了一个可以在隐式lambda中使用的`.`version。
``python
mapper=到lambda(map.`ux+2,````mapper
mapped\=mapper(a_list)
assert list(mapped_list)=list(range(2,12))
``````
implicit lambdas支持嵌套表达式
```python
mapped_list=map(((<;<;3)*3-23*\2,a_list)
assert list(mapped_list)=list(range(2,12))
````
在调试模式下(运行python时不要使用`-o`):
```python
>或:
``python
assert(repr(((<;lt;lt;3)*3-23*2)=
"<;lambdadadsl:lambda x:(((((x<;lt;3)*3)-(23*x))+2)@{}>;)"
``````
```````````````python
````python
``````python
assert到lambda(x*y)(5,3)==15=5,3)==15;
是的
```
[![构建状态](https://www.travis-ci.com/blackhc/implicit_lambda.svg?branch=master)(https://www.travis-ci.com/blackhc/implicit_lambda)[![codecov](https://codecov.io/gh/blackhc/implicit_lambda/branch/master/graph/badge.svg)(https://codecov.io/gh/blackhc/implicit_lambda)[![PYPI](https://img.shields.io/badge/pypi blackhc.implicit戋lambda-blue.svg)(https://pypi.python.org/pypi/blackhc.implicit戋lambda/)
此包添加了对隐式lambda的支持,因此您可以编写"map(戋+5,a戋list)",而不是"map(lambda x:x+5,a戋list)"。
3.7简洁的特点。这个包可以很容易地与早期版本一起使用。如果需要,请提交问题。
隐式lambda是使用代码生成实现的。当运行带有"-o"的python以启用优化时,它们的速度与常规lambda一样快。
```
——ps/s)
------------------------------------------------------------
测试正常λ196.3468(1.01)140.7775(2.32)166.9600(1.0)5.0930(0.99)
测试λ196.6705(1.01)113.9049(1.88)171.6000(1.03)5.0846(0.99)
测试操作链195.0673(1.0)60.6268(1.0)176.2300(1.06)5.1264(1.0)
——`普通lambda使用普通lambda。`操作链使用functools.partial和operator模块。
遗产。(动态创建一个新类型来保存表达式,使用自定义的"调用"解析调用就足以招致这样的惩罚。)
`(使用"getitem",成员访问(使用"getattribute",成员访问)和任何调用(调用)。这会带来很大的灵活性。
要消除lambda内的调用和调用lambda之间的歧义,隐式lambda必须显式转换为可调用/规则的python lambda。
`to_lambda`将隐式lambda表达式转换为python lambda。
`auto_lambda `将对隐式lambda的支持添加到接受可调用的现有函数中。
```
要运行测试,请使用:
````
python setup.py test
````
`其他的助手函数不需要调用。
`` python
来自blackhc.implicit_lambda import_x,y,to_lambda
来自blackhc.implicit_lambda.builtins import map
````
implicit lambda为所有常见的内置提供包装器。
`` python
a_list=list(range(10))
包装函数提供了一个可以在隐式lambda中使用的`.`version。
``python
mapper=到lambda(map.`ux+2,````mapper
mapped\=mapper(a_list)
assert list(mapped_list)=list(range(2,12))
``````
implicit lambdas支持嵌套表达式
```python
mapped_list=map(((<;<;3)*3-23*\2,a_list)
assert list(mapped_list)=list(range(2,12))
````
在调试模式下(运行python时不要使用`-o`):
```python
>或:
``python
assert(repr(((<;lt;lt;3)*3-23*2)=
"<;lambdadadsl:lambda x:(((((x<;lt;3)*3)-(23*x))+2)@{}>;)"
``````
```````````````python
````python
``````python
assert到lambda(x*y)(5,3)==15=5,3)==15;
是的
```