令人难以置信的Python布尔特性
>>> a = False
>>> b = False
>>> a | b
True
>>> a
True
>>> b
True
我在Python解释器中遇到了这个问题。
我觉得不太对。有没有关于Python 布尔类型
的详细资料呢?
我使用的是Python 2.6.6,谢谢!
3 个回答
2
|
是 Python 中的位或运算符。
如果你在做条件判断,应该使用 or
运算符:
>>> a = False
>>> b = False
>>> a or b
False
>>> a
False
>>> b
False
你可以在 这里 了解更多关于位运算符的信息。
补充说明:在运行你问题中提供的代码后,我得到的结果和你不一样……可能是你的安装有问题……
4
你的解释器出了点问题:
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> False | False
False
>>> a = False
>>> b = False
>>> a | b
False
7
我能想到的只有一种情况,你的问题才有意义:
>>> False = True
>>> a = False
>>> b = False
>>> a | b
True
>>> a
True
>>> b
True
>>>
首先来调试一下 - 运行 print int(False)
的结果是什么?如果上面的情况发生了,你应该得到 1
。试试这个:
>>> False = bool(0)
>>> a = False
>>> b = False
>>> a | b
False
至于为什么会发生这种情况 - 也许有人在捉弄你,改变了 False
的值(可以看看 这个回答)?我实在想不出还有什么其他原因会导致这种情况。你可以在需要的模块中把 False
设置为 bool(0)
,以防万一。
或者换用 Python 3,这样 True
和 False
就是保留字,不能被改变。