可能的重复:
Python 中的 False == 0 和 True == 1 是实现细节还是由语言保证? https://stackoverflow.com/questions/2764017/is-false-0-and-true-1-in-python-an-implementation-detail-or-is-it-guarantee
我的交互式控制台的简短记录:
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
到底为什么会这样呢?
Edit:为了对比,考虑is
操作员。
>>> 0 is False
False
>>> 1 is True
False
>>> 0 is 0
True
>>> True is True
True
这很有意义,因为虽然1
and True
两者与 a 的条件含义相同if
声明,它们确实不是同一件事。
再次编辑:更有趣的后果1 == True
:
>>> d = {}
>>> d[True] = "hello"
>>> d[1]
"hello"
因为Python中的布尔值是整数的子类型。从文档中:
布尔值是两个常量对象 False 和 True。它们用于表示真值(尽管其他值也可以被视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数 0 和 1。如果该值可以解释为真值,则可以使用内置函数 bool() 将任何值转换为布尔值(请参阅上面的真值测试部分)。
http://docs.python.org/library/stdtypes.html#boolean-values http://docs.python.org/library/stdtypes.html#boolean-values
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)