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

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,你的猜测是正确的。

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

    点赞 打赏 评论
  • blownewbee 2019-04-13 09:22

    3==3>2相当于 bool(3==3) and bool(3>2)

    点赞 打赏 评论

相关推荐 更多相似问题