为什么在Python中1 == True但2!= True?
我的交互式控制台的简要记录:
Python 2.7.2 (default, Jun 29 2011, 11:10:00)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True
True
>>> 0 == True
False
>>> 1 == True
True
>>> 2 == True
False
到底为什么呢?
编辑: 为了对比起见,请考虑is
运算符。
>>> 0 is False
False
>>> 1 is True
False
>>> 0 is 0
True
>>> True is True
True
这使得有很大的意义,因为虽然1
和True
都意味着同样的事,作为一个条件if
语句,他们真的是不一样的东西。
再次编辑: 更有趣的后果1 == True
:
>>> d = {}
>>> d[True] = "hello"
>>> d[1]
"hello"
-
因为Python中的Boolean是整数的子类型。从文档中:
布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数0和1。如果该值可以解释为真值,则可以使用内置函数bool()将任何值转换为布尔值(请参见上面的真值测试部分)。
http://docs.python.org/library/stdtypes.html#boolean-
values