Python 链式比较的优先级?

Python 链式比较的优先级?,python,Python,我想知道Python是如何解析的: not a < b < c 不是a

我想知道Python是如何解析的:

not a < b < c
不是a
这似乎解释为:

not (a < b < c)
not(a
(非a)

此问题解释了分组与链接: 但是链式比较的优先级规则是什么

我感到奇怪的是,
not
具有相同的优先级,但是
nota
解析为
not(a
,而
-a
解析为
(.a


我通过在Python2.7中评估
而不是2>1>2来测试这一点。

Python有一个抽象语法树模块来向您展示发生了什么:

import ast
t = ast.parse('not a < b < c')
print(ast.dump(t))

事实上,
not
的优先级低于
not2<1<2
并没有被解析为
not(2<1<2)
。每个术语从左到右处理。
not 2
False
,与数值
0
相同-因此它相当于
0<1<2
。此提示已被查看。可能是:是什么让你认为
不是
有同样的优先权?@martineau我用的是2>1>2而不是2<1<2,我认为这不是真的parsing@user2357112我错误地将
not in
is not
测试误认为是布尔
not
运算符
[Expr(value=UnaryOp(
    op=Not(),
    operand=Compare(
        left=Name(id='a'),
        ops=[Lt(), Lt()],
        comparators=[Name(id='b'), Name(id='c')]
    )
))]