遇到你,Be Pythonic!

最近工作比较忙,学习Elasticsearch的查询和熟悉工作中的业务代码,所以很长时间没有更新了。今晚终于可以有点时间抽空写写文章,那么就和大家分享一下在工作使用到的一个Python比较冷门的内置运算符不一样的使用:“>"

何为“>”?

有其他语言基础的朋友就会知道“>>”就是右移位运算符,“ection>

左移n位就是原来的数乘以2的n次方;

右移n位就是原来的数除以2的n次方:

还有什么不一样的用法?

下面我们定义一个类,重写">"方法,看看它们的变化:

我们打印一下它们的运行输出结果,总结它们的规律:

下面是运行结果:

寻找规律

无论是左移还是右移,命令都从左到右开始。第一个组合的输出将用作下一个操作的左操作符;

括号按照预期改变了操作顺序

__rshift__和__lshift__操作仅在实现它的类上调用

如果其中一个类没有实现__rshift__和__lshift__,则调用__rrshift__或__rlshift__操作,自己作为self

有什么Pythonic之处呢?

假设有以下一个业务场景,在调用一个业务处理函数之前需要等待前面n个业务处理函数处理完毕后才能执行, 比如坐地铁的流程:

如果是这样的话,一层嵌套一层,是不是很乱的感觉,有没有什么更形象的方法实现呢?

真有,Python就是这么简洁,下一篇就使用">>"形象使用下面的形式的实现上面的业务流程,就很形象明了:

如何实现呢?且听下回分解

可以先提供个思路,">>" Combine Recursion

Python全面学习资料

回复”电子书“即可

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181101A0007700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券