python的微型运算符

MiniOperators的Python项目详细描述


这个库使得在python中添加扩展运算符变得非常简单 语言,或者将现有函数转换为二进制运算符。为了 例如,可以使用函数compose

def compose(f, g):
    return lambda *args, **kwargs: f(g(*args, **kwargs))

把它变成一个运算符,|compose|

compose = MiniOperator(compose)

然后,该运算符可以用作二进制运算符[1]

f = math.sqrt  |compose|  (lambda x: x**2 + 1)
f(0) # 1.0

如果始终使用这个|<name>|符号和括号 参数,不应该出现问题[2]

此外,这样创建的运算符将支持通过 标准python约定__<name>____r<name>__特殊 方法。

文档

可以通过三种方式调用MiniOperator构造函数。 MiniOperator(f)创建名为f的运算符,该运算符使用f作为 默认操作[3]。也可以明确地传递名称: MiniOperator(name, f),其中name是字符串,将创建运算符 命名为name,使用f作为默认操作。最后,你可以创造 不指定默认方法的运算符:MiniOperator(name),其中 name是字符串,将导致运算符抛出 NotImplementedError用于大多数参数时。然而,一个班级 能够明确地重写__<name>____r<name>__来支持这个 接线员。

脚注

[1]Of course, the initial function must be binary — that is, it must take two arguments — and other obvious restrications apply as well.
[2]The author would like to suggest using two spaces around the operator and to take special care parenthesizing expressions.
[3]That is, the name is derived from the ^{tt19}$ of the passed function. The author suggests not overrelying on this form.

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

推荐PyPI第三方库


热门话题
java Android应用程序无法打开   java无法使用SQL工具查询现有Ignite缓存   雅加达ee全局Java Servlet过滤器,是否可能?   java方法参数扩展类实现接口   如何在SilkTest中获取Java Swing应用程序对象的属性值?   java懒人日志   java jspService(HttpServletRequest,HttpServletResponse)在Spring引导(嵌入式Tomcat)中超过了65535字节的限制   在Java8中,从基于多个属性的对象列表中删除重复项   java通过从Android到Spring的改造发送图像文件   java使用JAXB创建空对象解组空元素   java RecyclerView错误未连接适配器;跳过布局和设置OnClickListener   创建SQLite数据库时出现java错误:“安卓.database.SQLite.SQLiteException:near(9598)”?   从布局XML自动生成“视图”类型的类字段的java工具?   java Swing从5倒计时到0   java Apache HttpClient在尝试下载文件时发生握手异常时引发远程主机关闭连接   java如何在spring上从json中的对象获取信息   java将Google标签管理器添加到Magnolia CMS   添加新库时java清单合并失败