È garantito che False == 0e 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, booleredita da int. La domanda può quindi essere riformulata come: "La documentazione dice ufficialmente che i programmatori possono fare affidamento su valori01 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 ... :)