关于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语法糖之连续比较表达式相关推荐

  1. python语法糖是什么_Python语法糖Syntactic Sugar

    语法糖(Syntactic sugar): 计算机语言中特殊的某种语法 这种语法对语言的功能并没有影响 对于程序员有更好的易用性 能够增加程序的可读性 简而言之,语法糖就是程序语言中提供[奇技淫巧]的 ...

  2. Python中常见的语法糖

    Python中常见的语法糖 知识点导航: 1. 横线分隔符 2. 交换两个变量的值 3. 判断变量是否在范围内 4. 字符串的乘法 5. 列表相加 6. 列表切片 7. 解压序列赋值给多个变量 8. ...

  3. python语法糖是什么意思_python语法糖是什么

    语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添 ...

  4. python with contextmanager yield 语法糖

    官方示例 https://docs.python.org/zh-cn/3.8/library/contextlib.html 说实话,没看出来有多方便.我这写了两个功能相同的程序,一个用语法糖,一个用 ...

  5. python——装饰器和语法糖效果

    装饰器和闭包有很大的相关性,可以这么说,就是当外部函数后面的参数填入的是另一个函数的名称时(并且最多只能有一个参数),称之为装饰器,也可以说装饰器就是特殊的闭包. 可以用如下方法进行分析: def d ...

  6. python反转列表解析_Python语法糖之:列表解析、集合解析和字典解析

    ☆ Python的列表解析 (list comprehensions)是在Python 2.0以来一直都有的功能,特别简洁.实用.而字典解析虽然曾经在Python 2.3版本中引入过,但后来因为与di ...

  7. python串口连续数据_Python代码从串口连续接收可变数据

    通常,您与微通信所做的工作是将单个字符用于轻量级或创建通信协议.基本上你有一个开始标志,结束标志和某种校验和,以确保数据正确传输.有很多方法可以做到这一点. 以下代码适用于Python 3.您可能必须 ...

  8. python解析原理_Python语法垃圾回收机制原理解析

    一 引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...

  9. 数值运算python嵩天_python语法_算数运算+赋值运算符+比较运算符+逻辑运算符

    算术运算符 + - * / 加减乘除 5/2 = 2.5 5//2 = 2 整除,地板除 5%2= 1 取余数 2**10 指数运算 2的10次方 算术优先级 无论多少级,都使用()小括号进行优先级管 ...

最新文章

  1. JQuery模板插件jquery.tmpl-动态ajax扩展
  2. java getRuntime().exec 带符号的命令 无法执行 解决方法
  3. Want to archive tables? Use Percona Toolkit’s pt-archiver--转载
  4. Linux系统检测工具 三(Free,Top,ps,Vmstat,Sysstat)
  5. android 生命周期_Android生命周期组件 Lifecycle 源码详解(一)
  6. Mybatis中 sequence不能自增长
  7. 优秀工程师应该具备哪些素质_一名优秀工程师所需要具备的条件和素质[1]
  8. 【POJ】2065 SETI
  9. 给IT新人的15个建议:程序员的辛酸反省与总结!
  10. java获取类的信息
  11. 文本留言 php,一个php作的文本留言本的例子(一)
  12. bzoj 2115: [Wc2011] Xor(DFS+线性基)
  13. Python描述性统计
  14. notepad++7.3.1中文版
  15. 随机分组c语言,用C/C++进行随机分组的实现教程
  16. 倒车入库- 通过后视镜调整方向盘
  17. java有abc三边求周长语句_java 给定三个点由三个点求三角形周长和面积
  18. Pyecharts亚马逊订单可视化
  19. QT中读取STL并显示
  20. 数据分析师python面试题_数据分析师面试题

热门文章

  1. Jquery 数据类型转换
  2. 汇编指令和机器码的对应表
  3. python 批量降采样
  4. 小菜鸟谈html语义化
  5. 盘点国内外8个好用的二维码平台
  6. 在url中取ip或者键值对、手机号脱敏、电话号脱敏、身份证脱敏、银行卡号脱敏、身份证校验
  7. 2015-06-26
  8. 第二次作业(WordCount)重制版
  9. 计算机毕业设计JAVA辅导员职责信息管理系统mybatis+源码+调试部署+系统+数据库+lw
  10. document.title设置页面标题在ios中不起作用