首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >False == 0和True == 1是实现细节,还是由语言保证?

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

Stack Overflow用户
提问于 2010-05-04 17:03:30
回答 2查看 287.8K关注 0票数 270

是否保证Python语言中的False == 0True == 1 (假设用户没有重新分配它们)?例如,是否可以保证无论Python的版本是什么(无论是现有的还是将来的版本),以下代码都将始终生成相同的结果?

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

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

编辑:正如在许多答案中所指出的,bool继承自int。因此,这个问题可以被重新定义为:“文档是否正式说明程序员可以依赖从整数继承的布尔值,值为01?”这个问题与编写健壮的代码相关,这些代码不会因为实现细节而失败!

EN

回答 2

Stack Overflow用户

发布于 2010-05-04 17:16:51

链接到讨论Python2.3中新的bool类型的PEP:http://www.python.org/dev/peps/pep-0285/

将布尔值转换为整数时,整数值始终为0或1,但在将整数转换为布尔值时,布尔值对于除0以外的所有整数都为True。

>>> int(False)
0
>>> int(True)
1
>>> bool(5)
True
>>> bool(-5)
True
>>> bool(0)
False
票数 81
EN

Stack Overflow用户

发布于 2010-05-04 17:33:17

在Python 2.x中,根本不能保证:

>>> False = 5
>>> 0 == False
False

所以它可能会改变。在Python3.x中,True、False和None都是reserved words,因此上面的代码将无法工作。

一般来说,对于布尔值,您应该假设虽然False总是有一个0的整数值(只要您不改变它,如上所述),但True可以有任何其他值。我不一定依赖于任何True==1的保证,但是在Python3.x上,无论发生什么情况,这都将是永远的情况。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2764017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档