最近工作比较忙,学习Elasticsearch的查询和熟悉工作中的业务代码,所以很长时间没有更新了。今晚终于可以有点时间抽空写写文章,那么就和大家分享一下在工作使用到的一个Python比较冷门的内置运算符不一样的使用:“>"
何为“>”?
有其他语言基础的朋友就会知道“>>”就是右移位运算符,“ection>
左移n位就是原来的数乘以2的n次方;
右移n位就是原来的数除以2的n次方:
还有什么不一样的用法?
下面我们定义一个类,重写">"方法,看看它们的变化:
我们打印一下它们的运行输出结果,总结它们的规律:
下面是运行结果:
寻找规律
无论是左移还是右移,命令都从左到右开始。第一个组合的输出将用作下一个操作的左操作符;
括号按照预期改变了操作顺序
__rshift__和__lshift__操作仅在实现它的类上调用
如果其中一个类没有实现__rshift__和__lshift__,则调用__rrshift__或__rlshift__操作,自己作为self
有什么Pythonic之处呢?
假设有以下一个业务场景,在调用一个业务处理函数之前需要等待前面n个业务处理函数处理完毕后才能执行, 比如坐地铁的流程:
如果是这样的话,一层嵌套一层,是不是很乱的感觉,有没有什么更形象的方法实现呢?
真有,Python就是这么简洁,下一篇就使用">>"形象使用下面的形式的实现上面的业务流程,就很形象明了:
如何实现呢?且听下回分解
可以先提供个思路,">>" Combine Recursion
Python全面学习资料
回复”电子书“即可
领取专属 10元无门槛券
私享最新 技术干货