python 连续比较_python语法糖之连续比较表达式
关于python的连续比较的语法糖
比如有如下形式:
(a < b) and (b < c),这样子看起来不够好看。
python中提供了连续比较的语法糖:
a < b < c
再举一个栗子:
a < b > c != d >= e <= f != g
这个表达式会被python解释成:
(a < b) and (b > c) and (c != d) and (d >= e) and (e <= f) and (f != g)
再附上一个网友问的一个问题:
为什么表达式 -3 < -2 < -1 > -2 的结果为 True
这是python中的语法糖中的连续比较,不是数学上的表达式;这个表达式会被python解释成:
(-3 < -2) and (-2 < -1) and (-1 > -2)
所以 True and True and True 的结果为 True
很有意思吧,对此我再写一个类,用来观察这个过程。
class myint(int):
def __lt__(self, r): #小于号比较魔法方法
print(self, "<", r) #输出比较过程
return super().__lt__(r)
def __gt__(self, r):#大于号比较魔法方法
print(self, ">", r) #输出比较过程
return super().__gt__(r)
a = myint(-3)
b = myint(-2)
c = myint(-1)
d = myint(0)
print("python内建int对象比较过程:")
print("-3<-2<-1<0>-2")
print("连续比较结果:", -3<-2<-1<0>-2)
print("拆分比较结果:", (-3<-2) and (-2<-1) and (-1<0) and (0>-2))
print("myint, 观察具体过程:")
print("连续比较:")
print("结果:", ab)
print("拆分比较:")
print("结果:", (a < b) and (b < c) and (c < d) and (d > b))
复制代码
上面的代码在python 3.x上面执行没问题,得到了正确的结果。
代码在手机上编辑运行,在帖子编辑器上没找到上传本地图片的地方,我直接贴结果啦
python内建int对象比较过程:
-3<-2<-1<0>-2 连续比较结果: True 拆分比较结果: True myint, 观察具体过程: 连续比较: -3 < -2 -2 < -1 -1 < 0 0 > -2 结果: True 拆分比较: -3 < -2 -2 < -1 -1 < 0 0 > -2 结果: True [Program finished]
复制代码
所以呀,妈妈经常说,糖吃多了不好哟~~~
语法糖固然方便,但是使用前最好知道其原理,不然真的“甜的掉牙”呢。。。
标签: Python 语法糖
顶一下
(0)
0%
踩一下
(0)
0%
python 连续比较_python语法糖之连续比较表达式相关推荐
- python语法糖是什么_Python语法糖Syntactic Sugar
语法糖(Syntactic sugar): 计算机语言中特殊的某种语法 这种语法对语言的功能并没有影响 对于程序员有更好的易用性 能够增加程序的可读性 简而言之,语法糖就是程序语言中提供[奇技淫巧]的 ...
- Python中常见的语法糖
Python中常见的语法糖 知识点导航: 1. 横线分隔符 2. 交换两个变量的值 3. 判断变量是否在范围内 4. 字符串的乘法 5. 列表相加 6. 列表切片 7. 解压序列赋值给多个变量 8. ...
- python语法糖是什么意思_python语法糖是什么
语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添 ...
- python with contextmanager yield 语法糖
官方示例 https://docs.python.org/zh-cn/3.8/library/contextlib.html 说实话,没看出来有多方便.我这写了两个功能相同的程序,一个用语法糖,一个用 ...
- python——装饰器和语法糖效果
装饰器和闭包有很大的相关性,可以这么说,就是当外部函数后面的参数填入的是另一个函数的名称时(并且最多只能有一个参数),称之为装饰器,也可以说装饰器就是特殊的闭包. 可以用如下方法进行分析: def d ...
- python反转列表解析_Python语法糖之:列表解析、集合解析和字典解析
☆ Python的列表解析 (list comprehensions)是在Python 2.0以来一直都有的功能,特别简洁.实用.而字典解析虽然曾经在Python 2.3版本中引入过,但后来因为与di ...
- python串口连续数据_Python代码从串口连续接收可变数据
通常,您与微通信所做的工作是将单个字符用于轻量级或创建通信协议.基本上你有一个开始标志,结束标志和某种校验和,以确保数据正确传输.有很多方法可以做到这一点. 以下代码适用于Python 3.您可能必须 ...
- python解析原理_Python语法垃圾回收机制原理解析
一 引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...
- 数值运算python嵩天_python语法_算数运算+赋值运算符+比较运算符+逻辑运算符
算术运算符 + - * / 加减乘除 5/2 = 2.5 5//2 = 2 整除,地板除 5%2= 1 取余数 2**10 指数运算 2的10次方 算术优先级 无论多少级,都使用()小括号进行优先级管 ...
最新文章
- JQuery模板插件jquery.tmpl-动态ajax扩展
- java getRuntime().exec 带符号的命令 无法执行 解决方法
- Want to archive tables? Use Percona Toolkit’s pt-archiver--转载
- Linux系统检测工具 三(Free,Top,ps,Vmstat,Sysstat)
- android 生命周期_Android生命周期组件 Lifecycle 源码详解(一)
- Mybatis中 sequence不能自增长
- 优秀工程师应该具备哪些素质_一名优秀工程师所需要具备的条件和素质[1]
- 【POJ】2065 SETI
- 给IT新人的15个建议:程序员的辛酸反省与总结!
- java获取类的信息
- 文本留言 php,一个php作的文本留言本的例子(一)
- bzoj 2115: [Wc2011] Xor(DFS+线性基)
- Python描述性统计
- notepad++7.3.1中文版
- 随机分组c语言,用C/C++进行随机分组的实现教程
- 倒车入库- 通过后视镜调整方向盘
- java有abc三边求周长语句_java 给定三个点由三个点求三角形周长和面积
- Pyecharts亚马逊订单可视化
- QT中读取STL并显示
- 数据分析师python面试题_数据分析师面试题