通过部分应用运算符生成匿名函数的简单方法。

whatever的Python项目详细描述


一种通过部分应用python操作符制作lambdas的简单方法。

灵感来自Perl6 One,请参见http://perlcabal.org/syn/S02.html#The_Whatever_Object

用法

fromwhateverimport_,that# get a list of guys namesnames=map(_.name,guys)names=map(that.name,guys)odd=map(_*2+1,range(10))squares=map(_**2,range(100))small_squares=filter(_<100,squares)best=max(tries,key=_.score)sort(guys,key=-that.height)factorial=lambdan:reduce(_*_,range(2,n+1))

注意:不能实现链式比较,因为python中没有布尔重载。

注意事项

在某些特殊情况下,任何可能导致混淆的东西:

_.attr# this makes callableobj._# this fetches '_' attribute of obj_[key]# this works tood[_]# KeyError, most probably_._# short for attrgetter('_')_[_]# short for lambda d, k: d[k]if_=='Any value':# You will get here, definitely# `_ == something` produces callable, which is true[1,2,_*2,None].index('hi')# => 2, since bool(_ * 2 == 'hi') is True

此外,无论有时在后期绑定时失败:

(_*2)('2')# -> NotImplemented

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java线程执行器服务   aspose如何通过java获得单词bookmark之前的所有文本内容?   一对一映射的java Hibernate合并问题   java SOAP XSD根元素问题   java如何保护我的Spring启动API   java使用GeoJson向google地图添加标记   java安卓:在SQLite中没有这样的列   java STS 2.8.0 StartExplorer/Legacy插件安装问题   java如何以编程方式获取AppBar高度?   在Java中将BigDecimal添加到BigDecimal   java不支持ntdll。dll是windows xp和windows vista的标准配置吗?   内容类型为application/xwwwformurlencoded的java Http Put请求在Spring中不起作用   java在数组中计算工资并返回答案   java数字/货币格式   elasticsearch java api中的弹性搜索查询