8>6 & 2>0的结果是多少?
>>>8>6 & 2>0
True
好像挺简单的。
交换一下顺序,2>0 & 8>6,结果又是多少?
>>>2>0 & 8>6
False
这是什么鬼?
先看一个类似的运算3<2+2<5。
它先计算2+2,然后再计算3<4<5,
类似地,2>0 & 8>6 先执行0 & 8得到0,然后计算2>0>6,结果自然是False。
前面的 8>6 & 2>0,在计算6 & 2得到2后,继续计算8>2>0,所以最后结果为True。
总结下要点:
1、&是位运算,而不是逻辑运算,回忆下C中的&,C的&&在python中写为and;
2、&的优先级高于关系运算<、>等,于是 2>2 & 8>6 会变为 2>0>6,8>6 & 2>0 会变为 8>2>0。