False == 0和True == 1是实现细节还是由语言保证?

问题描述 投票:233回答:6

是否可以保证False == 0True == 1在Python中(假设用户没有重新分配它们)?例如,是否以任何方式保证以下代码将始终产生相同的结果,而不管Python是什么版本(既有现有版本,也可能是未来版本)?

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'

任何对官方文档的引用将不胜感激!

Edit:如许多答案所述,bool继承自int。因此,可以将问题改写为:“文档是否正式声明程序员可以依赖从整数继承的布尔值,具有01]的值?”。这个问题与编写不会因为实现细节而失败的健壮代码有关!

是否可以在Python中确保False == 0和True == 1(假设它们没有由用户重新分配)?例如,是否以任何方式保证以下代码将始终产生...

python boolean equality language-specifications
6个回答
174
投票

在Python 2.x中,这是


73
投票

链接到PEP的讨论Python 2.3中新的布尔类型的链接:for Python 2


22
投票

在Python 2.x中,根本无法保证:


-1
投票

非常简单。由于布尔值与将整数评估为布尔值有关,因此只有零给出错误的答案。所有非零值,浮点数,整数(包括负数)或具有的所有内容都将返回true。


-2
投票

只需输入<=,您会得到int(False),如果您键入0,它将输出int(True)


-5
投票

假是布尔。它具有不同的类型。它是不同于整数的0的对象。

© www.soinside.com 2019 - 2024. All rights reserved.