È garantito che False == 0
e True == 1
, in Python (supponendo che non siano riassegnati dall'utente)? Ad esempio, è in qualche modo garantito che il seguente codice produrrà sempre gli stessi risultati, qualunque sia la versione di Python (sia quella esistente che, probabilmente, futura)?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
Qualsiasi riferimento alla documentazione ufficiale sarebbe molto apprezzato!
Modifica : come indicato in molte risposte, bool
eredita da int
. La domanda può quindi essere riformulata come: "La documentazione dice ufficialmente che i programmatori possono fare affidamento su valori0
1
booleani ereditati da numeri interi, con i valori e ?". Questa domanda è rilevante per la scrittura di codice robusto che non fallirà a causa dei dettagli di implementazione!
sum(bool_list)
. Altrimenti, dovresti scrivere sum(1 for x bool_list if x)
.
bool_list.count(True)
è più esplicito; è anche circa 3 volte più veloce ... :)