为什么 Python 中 1 == True 而 2 != True ? [复制]

2024-02-22

可能的重复:
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(使用前将#替换为@)

为什么 Python 中 1 == True 而 2 != True ? [复制] 的相关文章

随机推荐