18910140161

python语法糖之连续比较表达式

顺晟科技

2021-06-16 10:44:57

239

python连续比较的语法糖

例如,它有以下形式:

(a b)和(b c),看起来不够好。

Python提供语法糖:用于连续比较

a b c

再举个栗子:

a b c!=d=e=f!=g

这个表达式会被python解释为:

(a)b和(b)c和(c!=d) and (d=e) and (e=f) and (f!=g)

附上网友提问的问题:

为什么表达式-3 -2 -1 -2的结果为真

这是python中语法糖的连续比较,不是数学表达式;这个表达式会被python解释为:

(-3 -2)和(-2 -1)和(-1 -2)

所以真、真、真的结果就是真

是不是很有意思?我再写一个类来观察这个过程。

class myint(int):

Def __lt__(self,r): #比较小于号的魔术方法

打印(自身,'',r) #输出比较过程

返回super()。__lt__(r)

Def __gt__(self,r):#比较大于号的神奇方法

打印(自身,'',r) #输出比较过程

返回super()。__gt__(r)

a=myint(-3)

b=myint(-2)

c=myint(-1)

d=myint(0)

打印(' python内置int对象比较过程: ')

打印('-3-2-10-2 ')

打印('连续比较结果: ',-3-2-10-2)

打印('分割比较结果: ',(-3-2)和(-2-1)和(-10)和(0-2))

打印(' myint,观察具体过程: ')

打印('连续比较: ')

打印('结果: ',abcdb)

打印('分割比较: ')

打印('结果: ',(a b)和(b c)和(c d)和(d b))

复制代码

以上代码在python 3.x上执行没有问题,得到了正确的结果。

代码在手机上编辑运行,贴吧编辑器上没有上传本地图片的地方。我会直接公布结果

Python内置int对象比较进程:

-3-2-10-2连续比较结果:真分割比较结果:真myint,观察具体过程:连续比较:-3-2-1-100-2结果:真分割比较: -3 -2 -2 -1 -1 0 0 -2结果:

复制代码

所以,我妈经常说糖吃多了不好~ ~ ~

语法糖方便,但更好先了解其原理再使用,不然真的会“爱吃甜食”。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航