最新在
CSDN
中回答了用户一个问题,也被采纳了。在此过程中也学习到了Python
连续比较运算符,感觉Python
的连续比较运算符可读性很一般,写代码的时候很容易就理解错。
Python连续比较运算符的可读性问题
- 前言
- 一、CSDN问答用户关于Python表达式的疑问
- 二、问题分析过程
- (一)把两个不同结果的表达式列出来
- (二)对两个表达式进行简化
- (三)在PyCharm开发环境中进行测试
- (四)查阅资料得出结论
- 三、总结
前言
- ①连续比较运算符简介: 在
Python
中,比较运用符<、>、<=、>=、== 、!=
可以连用,但语法规则和其它编程语言不一样。- ②连续比较运算符案例: 以
==
为例,具体语法规则是:a == b == c == d
等价于a == b and b == c and c == d
。
一、CSDN问答用户关于Python表达式的疑问
CSDN问答用户提出的问题链接:👉https://ask.csdn.net/questions/7887166
截图如下:
上图中,两个表达式按运算符优先级进行运算,按
True==1
和False==0
,结果应该都是True
吧,可是这里怎么会不同呢?有人给咱解解惑吗?谢谢。
二、问题分析过程
(一)把两个不同结果的表达式列出来
首先我们先把两个不同结果的表达式列出来,方便一步一步求解问题,了解Python解析器解析表达式的运作过程。同时也需要复习一下Python的运算符相关知识👉Python运算符及用法(超级详细)
5+2>3==2**0
(5+2>3)==2**0
(二)对两个表达式进行简化
由于**
的优先级比==
高所以以上两个表达式可以等价为:
5+2>3==1
(5+2>3)==1
对于第一个表达式,+
号优先级最高,同理表达式2括号中的表达式也是+
号优先级较高,所以又可以等价为:
7>3==1
(7>3)==1
(三)在PyCharm开发环境中进行测试
到这里,我们使用PyCharm
运行上面的表达式,结果如下:
所以该问题就变成,7>3==1
和(7>3)==1
表达式计算的结果为什么不是都是True
。
(四)查阅资料得出结论
经过查阅资料,发现Python支持连续的比较运算符:a > b == c
,但它其实是 a > b and b == c
的简略写法,而不是表示先进行计算 a > b
,然后用结果判断是否等于c
,也不是判断a是否大于 b == c
的结果。
所以7>3==1
应为7>3 and 3==1
为False
。
连续比较运算符参考阅读:👉python语法糖之连续比较表达式
三、总结
通过问题的解答,自己又学会了一个Python
的知识点,原来运算符还可以连续运算。但在使用的时候要非常注意,因为它和我们看代码的习惯很不一样,很容易就理解错了或者导致代码出现意向不到的结果。
反过来想一想,为什么Python
要搞个这样的语法,是不是就是为了程序员一时的方便,写代码更快更简短,但这极大的影响了程序的可读性,同时不便于程序的维护和更新。
文章出处登录后可见!