python逻辑运算符not, and,or,>, <, ==的优先级 您所在的位置:网站首页 python运算符优先级表 python逻辑运算符not, and,or,>, <, ==的优先级

python逻辑运算符not, and,or,>, <, ==的优先级

2023-12-11 06:44| 来源: 网络整理| 查看: 265

逻辑运算符中比较常见的就是not,and, or, >, not>and>or。 为了说清楚它们之间的关系,我们需要先明确and和or运行时候的特点,代码如下:

class Debug: def mainProgram(self): self.x0 = 0 self.x1 = 1 self.x2 = 5 print(self.x0 and self.x1) # 0 print(self.x1 and self.x0) # 0 print(self.x1 and self.x2) # 5 print(self.x2 and self.x1) # 1 print(self.x0 or self.x1) # 1 print(self.x1 or self.x0) # 1 print(self.x1 or self.x2) # 1 print(self.x2 or self.x1) # 5 print(self.x1 > self.x0) # True print(self.x1 , , self.x0 and self.x2) # 5 print(self.x1 self.x0 and self.x2输出的结果为5而self.x1 < self.x0 and self.x2的结果为False。对于self.x1 > self.x0 and self.x2来说,如果比较运算符的优先级较高,先执行self.x1 > self.x0条件判断,结果应该为True,再执行True and 5(变量self.x2的值为5)的结果根据我们之前总觉得规律应该为5。对于self.x1 < self.x0 and self.x2来说,self.x1 < self.x0的结果为False,而False and 5的结果根据之前的规律应该为False。那么如果比较运算符的优先级低于and呢?对self.x1 > self.x0 and self.x2而言,self.x0 and self.x2的结果为0,1 > 0的结果为True,所以最终的结果应该为True,很明显与我们得到的结果不符。由此我们可以得到比较运算符的优先级高于and。 联想一下我们在写代码的时候经常使用的条件语句,if x > 30 and x < 100:,通常我们并不会给and两侧的比较运算符条件部分添加括号,这也是因为比较运算符的优先级高与and的原因。 接下来我们比较not运算符与or运算符的优先级。代码如下:

class Debug: def mainProgram(self): self.x1 = 1 print(not self.x1 or self.x1) # 1 if __name__ == "__main__": main = Debug() main.mainProgram()

我们看到最终的输出结果为1,假设or的运算符优先级较高,self.x1 or self.x1的结果应为1,not 1的结果应该为0。与输出结果不符合,我们再假设not的优先级较高,not self.x1为not 1,结果为False,False or 1的结果为1,与我们得到的结果一致,因此推断,not运算符的优先级高于or算符的优先级。 接下来我们再比较and算符的优先级与or算符的优先级。代码如下:

class Debug: def mainProgram(self): self.x0 = 0 self.x1 = 1 self.x2 = 2 print( self.x0 and self.x1 or self.x2) # 2 print( self.x1 and self.x0 or self.x2) # 2 if __name__ == "__main__": main = Debug() main.mainProgram()

我们假设or的优先级较高,对self.x0 and self.x1 or self.x2来说,根据前面总结的规律self.x1 or self.x2的结果应该为1,self.x0 and 1的结果为0与我们的结果为2不符合。因此进一步考虑or算符的优先级低于and。self.x0 and self.x1的结果为0,0 or self.x2的结果为2。进一步可以针对self.x1 and self.x0 or self.x2进行验证,这里省略讨论过程。最终我们得到结论,and算符的优先级大于or算符的优先级。 同理使用如下代码可以比较not算符与and算符的优先级。

class Debug: def mainProgram(self): self.x0 = 0 self.x1 = 1 print(not 0) # True print(not 1) # False print(not self.x0 and self.x1) # 1 if __name__ == "__main__": main = Debug() main.mainProgram()

很轻易地我们可以看出,如果and优先级较高,那么最终的输出结果应该为True或者False,而现在的输出结果是一个数字,因此not的优先级高于and。 最终我们需要确认比较运算符和not运算符的优先级关系,并以此来确定出这四个种类运算的优先级顺序,代码如下:

class Debug: def mainProgram(self): self.x0 = 0 self.x1 = 1 print(not 0) # True print(True > 1) # False print(not self.x0 > self.x1) # True if __name__ == "__main__": main = Debug() main.mainProgram()

我们可以看到,当我们测试True > 1时,输出的结果为False,因此我们可以推断,比较运算符的优先级大于not算符。 因为如果not算符的优先级较高,not self.x0的结果为True,而True > 1的结果为False,与我们最终得到的True的结果不符合,如果比较运算符的优先级较高,那么self.x0 > self.x1的结果为False,not False的结果为True,印证了我们之前的推断。 此外,对于同一种类的运算符,运算次序服从从左到右的执行顺序,想要更改运算次序添加小括号即可。 如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有