Гарантируется ли это False == 0
и True == 1
в Python (при условии, что они не переназначены пользователем)? Например, гарантируется ли каким-либо образом, что следующий код всегда будет давать одинаковые результаты, независимо от версии Python (как существующей, так и, вероятно, будущей)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Любая ссылка на официальную документацию будет высоко ценится!
Изменить : как отмечено во многих ответах, bool
наследуется от int
. Поэтому вопрос можно переформулировать так: «Официально ли в документации сказано, что программисты могут полагаться на логические значения, наследуемые от целых чисел, со значениями 0
и1
?». Этот вопрос актуален для написания надежного кода, который не потерпит неудачу из-за деталей реализации!
sum(bool_list)
. В противном случае вам придется написать sum(1 for x bool_list if x)
.
bool_list.count(True)
это более явно; это также примерно в 3 раза быстрее… :)