我正在像下面这样在空闲状态下进行测试,但是出了点问题..
>>> print 1<>1
False OK
>>> print 1<>0
True OK
>>> print False | True
True OK
>>> print False | 1<>0
True OK
>>> print 1<>1 | 1<>0
False WHY ???
我正在像下面这样在空闲状态下进行测试,但是出了点问题..
>>> print 1<>1
False OK
>>> print 1<>0
True OK
>>> print False | True
True OK
>>> print False | 1<>0
True OK
>>> print 1<>1 | 1<>0
False WHY ???
您正在使用|
按位或运算符。您可能正在寻找or
运营商。or
是布尔 OR运算符。
请注意,<>
已弃用,您真的想使用!=
。
>>> 1 != 1
False
>>> 1 != 0
True
>>> False or True
True
>>> False or 1 != 0
True
>>> 1 != 1 or 1 != 0
True
在 Python 中,bool()
类型是 的子类int()
,True
等于 1 和False
0,因此使用按位运算符 onTrue
并且False
具有与这些值是整数一样的输出:
>>> True == 1
True
>>> 10 | True
11
但因为|
有比(或)更高的先例,所以首先执行:!=
<>
>>> 1 != (1 | 1) != 0
False
>>> (1 != 1) | (1 != 0)
True
or
短路,它返回第一个布尔值 true-ish 的表达式值(集合非空,数值非零)。
这是运算符优先级相关的问题:
>>> (1<>1) | (1<>0)
True
|
的优先级高于<>
。