相关疑难解决方法(0)

Python中的False == 0和True == 1是一个实现细节还是由语言保证?

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

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'
Run Code Online (Sandbox Code Playgroud)

任何对官方文档的引用都将非常感谢!

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

python boolean equality language-specifications

230
推荐指数
3
解决办法
23万
查看次数

使用bool作为整体是Pythonic吗?

False相当于0并且True是等价的,1因此可以做这样的事情:

def bool_to_str(value):
    """value should be a bool"""
    return ['No', 'Yes'][value]

bool_to_str(True)
Run Code Online (Sandbox Code Playgroud)

请注意值是如何bool但是用作int.

这是使用Pythonic还是应该避免?

python boolean

66
推荐指数
5
解决办法
8049
查看次数