是否保证Python语言中的False == 0
和True == 1
(假设用户没有重新分配它们)?例如,是否可以保证无论Python的版本是什么(无论是现有的还是将来的版本),以下代码都将始终生成相同的结果?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
任何对官方文档的引用都将不胜感激!
编辑:正如在许多答案中所指出的,bool
继承自int
。因此,这个问题可以被重新定义为:“文档是否正式说明程序员可以依赖从整数继承的布尔值,值为0
和1
?”这个问题与编写健壮的代码相关,这些代码不会因为实现细节而失败!
发布于 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
发布于 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上,无论发生什么情况,这都将是永远的情况。
https://stackoverflow.com/questions/2764017
复制相似问题