https://segmentfault.com/q/1010000009798396/a-1020000009798828
正如上面所说,因为 not operator 的优先级小于 +
所以 not(1)+5 会被翻译为 not (1+5)
关于这些情况,你完全可以通过 dis模块 来查看具体的过程。
>>> import dis
>>> dis.dis("a = False + 5")
1 0 LOAD_CONST 3 (5)
3 STORE_NAME 0 (a)
6 LOAD_CONST 2 (None)
9 RETURN_VALUE
>>> dis.dis("a = not(1) + 5")
1 0 LOAD_CONST 3 (6)
3 UNARY_NOT
4 STORE_NAME 0 (a)
7 LOAD_CONST 2 (None)
10 RETURN_VALUE