Est-ce garanti False == 0
et True == 1
en Python (en supposant qu'ils ne sont pas réaffectés par l'utilisateur)? Par exemple, est-il garanti de quelque manière que le code suivant produira toujours les mêmes résultats, quelle que soit la version de Python (à la fois existante et, probablement, future)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Toute référence à la documentation officielle serait très appréciée!
Edit : Comme indiqué dans de nombreuses réponses, bool
hérite de int
. La question peut donc être reformulée comme suit: "La documentation dit-elle officiellement que les programmeurs peuvent s'appuyer sur des booléens héritant d'entiers, avec les valeurs 0
et1
?". Cette question est pertinente pour écrire du code robuste qui n'échouera pas à cause des détails d'implémentation!
sum(bool_list)
. Sinon, il faudrait écrire sum(1 for x bool_list if x)
.
bool_list.count(True)
c'est plus explicite; c'est aussi environ 3 fois plus rapide… :)