ddrrrrww 2019-04-12 23:33 采纳率: 100%
浏览 790
已采纳

python3比较运算符优先级

网上都说比较(<=,<,>,>=)的优先级高于等于(==,!=,<>)的优先级

请问下面的代码怎么解释

>>> 3==3>2
True
>>> (3==3)>2
False
>>> 3==(3>2)
False

我唯一能想到的就是它进行了与运算:

3==2 and 3>2
  • 写回答

2条回答 默认 最新

  • 溪水人家 2019-04-13 10:34
    关注

    <, <=, >, >=,<>, !=, == 这些比较运算符是相同优先级,与in, not in, is, is not同属一个优先级组。

    再来看你的代码 3==3>2 中有两个运算符== 与> ,优先级相同。

    当优先级相同时候,Python会根据关联性Associativity来执行,除去**指数运算以外都是按照从左往右执行。例如

    print(4 * 7 % 3)
    # result 1
    
    print(4 ** 2 ** 2)
    # Output: 256
    
    

    但> == 属于非关联性运算符,赋值和比较都属于非关联性运算符. 对于这类,Python有具体的规则,不能按照关联性来执行。举个例子 5<7<9 是等效于 5<7 and 7<9.

    所以你的代码
    3==3>2 相当于 3==3 and 3>2,你的猜测是正确的。

    可以参考这篇文章查看更详细内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码