您现在的位置是:亿华云 > 域名
不可思议,Python 的链式操作竟然可以这样
亿华云2025-10-09 01:26:17【域名】4人已围观
简介学习 Python 的过程中,有没有让你出乎意料的情景,在细品之后,又觉得情理之中呢?(有的话文末留言哈)我就遇到过,初见时不可思议,仔细学习之后,又觉得豁然开朗,Python 的链式操作就是这样的场
学习 Python 的不可思议过程中,有没有让你出乎意料的式操情景,在细品之后,作竟又觉得情理之中呢?不可思议(有的话文末留言哈)我就遇到过,初见时不可思议,式操仔细学习之后,作竟又觉得豁然开朗,不可思议Python 的式操链式操作就是这样的场景。
不可思议
比如说,作竟你看到 True is 不可思议False 的结果是 False, False is False 的结果是 True ,不会觉得有什么问题:
>>> True is False False >>> False is False True然后,式操当你你看到 True is 作竟False is False 的结果是 False,可能就觉得不可思议。不可思议
>>> True is False is False False >>>因为无论是式操从前计算,还是作竟从后计算,结果都应该是 True 啊:
>>> (True is False) is False True >>> True is (False is False) True >>>豁然开朗
当认知和实际情况不一致的免费信息发布网时候,恰恰是我们需要学修正自己的时候。这种操作属于链式操作,Python 的官方文档有解释:https://docs.python.org/3/reference/expressions.html#comparisons
翻译一下,大致意思就是 Python 中的比较运算与 C 语言不同,这些比较操作具有相同的优先级,该优先级低于任何算术,移位或按位运算。
这些比较操作包括 in, not in, is, is not, <, <=, >, >=, !=, == 操作符,会产生 True 或 False 的结果,这些比较操作符号可以任意的链式比较,比如:x < y <= z,x < y 与 y <= z 具有相同的优先级,不存在先计算 x < y ,得到结果后再与<=z 进行比较的情况,因此x < y <= z 与 x < y and y <= z是等价的。
x < y and y <= z 中,如果 x < y 的站群服务器结果是 False,那么 y <= z 根本不会被计算。
也就是说a op1 b op2 c ... y opN z 等价于 a op1 b and b op2 c and ... y opN z,每一个表达式最多被执行一次。
注意,a op1 b op2 c 并不代表 a 和 c 有必然的关系,比如这样写x < y > z 也是合法的,虽然并不好看。
那么开始的问题就变得简单了:
True is False is False相当于
(True is False) and (False is False)结果自然就是 False。
相信,现在你已经明白了下面的现象:
>>> 1 in [0,1] == True False >>> not True in [True,False] False然后,我再分享一下链式操应用的好例子和坏例子。
好例子,一目了然:
if 0 < x < 1: print("x in range (0,1)") if 0 <= x < 1: print("x in range [0,1)") if x <= y <= z: print("y in range [x,z]") if x >= y >= 1: print("y in range [1,x]") if x == y == z: print("x,y,z all equal")坏例子,不知所云。我们应该避免这样写:
if x < y > z: print("y > max(x,z)") if x != y != z: print("kinda looks like x,y,z all distinct, but may have x==z") if 0 > x < y != z > 1: print("WHY??") if 0 < x > 1 >> y << 1 < z > 1: print("please remove this from the language")用法没问题,但可能让人产生疑问的,类似文章开头的例子,也尽量避免:
if 0 < x < y == z < 1: print("x,y in (0,1) with x<y and z==y") if x <= y <= z != 1: print("y in range(x,z) with z != 1") if x == y == z != 1: print("x,y,z all equal something that isnt 1") if x is y is z: print("x,y,z all identical") if x is y is z in [1, 2, 3]: print("x,y,z all identical and in [1,2,3]") b2b供应网很赞哦!(9)
相关文章
- 第六:这个圈子里的域名确实是赚钱的一些大玩家,至于小米农,有多少赚钱?几乎没有,也就是说,轿子里只有一个人,而且大多数人都抬着轿子。
- 边缘数据中心如何重新定义计算?
- DDoS攻击:数据中心陷入十字准线
- 确保边缘数据中心的安全:挑战和解决方案
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 五大数据中心常见黑客攻击手段剖析
- 如何管理分布式边缘数据中心的运维与监控?
- 资源合池化后的异构差异问题解析--CPU分层现象和解决思路
- 当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
- 后端开发必备,详解使用Nginx部署网站