令人难以置信的python布尔功能

时间:2011-01-11 02:50:58

标签: python boolean python-2.6

>>> a = False
>>> b = False
>>> a | b
True
>>> a
True
>>> b
True

我在python解释器中得到这个。

我只是不这么认为。有没有关于python boolean type的详细资料?

我使用 Python 2.6.6 ,谢谢!

3 个答案:

答案 0 :(得分: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的价值(见this answer)?我真的想不出任何会导致这种情况的事情。您可以随时在需要的模块中将False设置为bool(0),以防止此情况发生。

或切换到Python 3,这会使TrueFalse保留字无法更改。

答案 1 :(得分: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

答案 2 :(得分:2)

|是python中的bitwise-or运算符。

如果您正在进行条件检查,则应使用or运算符:

>>> a = False
>>> b = False
>>> a or b
False
>>> a
False
>>> b
False

您可以阅读有关按位运算符here的更多信息。

编辑/侧面注意:运行您在问题中发布的代码后,我得不到相同的结果......您的安装可能有问题......