为什么在Python中1 == True但2!= True?

发布于 2021-01-29 18:27:50

我的交互式控制台的简要记录:

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

这使得有很大的意义,因为虽然1True都意味着同样的事,作为一个条件if语句,他们真的是不一样的东西。

再次编辑: 更有趣的后果1 == True

>>> d = {}
>>> d[True] = "hello"
>>> d[1]
"hello"
关注者
0
被浏览
218
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    因为Python中的Boolean是整数的子类型。从文档中:

    布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别类似于整数0和1。如果该值可以解释为真值,则可以使用内置函数bool()将任何值转换为布尔值(请参见上面的真值测试部分)。

    http://docs.python.org/library/stdtypes.html#boolean-
    values



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看