我测试闲置象下面这样,但事情错了..蟒蛇比较,事情错了
>>> 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
是布尔运算符或运算符。
请注意,<>
已弃用,您要真的使用!=
。
>>> 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,从而使用上True
和False
位运算符具有相同的输出,就好像这些值分别为整数,而不是:
>>> True == 1
True
>>> 10 | True
11
但因为|
具有比!=
(或<>
)一个更高先例它执行冷杉ST:
>>> 1 != (1 | 1) != 0
False
>>> (1 != 1) | (1 != 0)
True
or
短路,它返回第一个表达式值是布尔真肥胖型(非空对集合的非零数字值)。
它的运算符优先级相关的问题:
>>> (1<>1) | (1<>0)
True
|
比<>
更高的优先级。
您的代码被解释为:
>>> print 1 <> (1 | 1) <> 0
False
这是因为order precedence的,在提供的链接有据可查。
非常多的是,按位或运算符的优先级高于不等于运算符<>
(请注意,这已被弃用,因此在Python 3中不存在。其他阅读内容可参见here)。因此,它首先被评估,然后接下来解释<>
。
易于测试此行为:1 <> 0 | 2对1 <> 0 | 1 –