Quale valore di verità valgono gli oggetti in Python?Valutazione delle espressioni booleane in Python
Domande correlate
- Boolean Value of Objects in Python: Discussione sulla sovrascrivendo il modo in cui viene valutata
Quale valore di verità valgono gli oggetti in Python?Valutazione delle espressioni booleane in Python
Domande correlate
qualsiasi oggetto può essere testato per la verità valore, per uso in un caso o mentre condizione o come operando delle operazioni booleane indicati. I seguenti valori considerati erronei:
nessuna
False
zero di alcun tipo numerico, ad esempio,
0
,0L
,0.0
,0j
.qualsiasi sequenza vuota, ad esempio
''
,()
,[]
.qualsiasi mappatura vuota, ad esempio
{}
.istanze di classi definite dall'utente, se la classe definisce un metodo
__nonzero__()
o__len__()
, quando tale metodo restituisce il valoreFalse
intero zero o bool.Tutti gli altri valori sono considerati veri - così oggetti di molti tipi sono sempre veri. Le operazioni e le funzioni predefinite con risultato booleano restituiscono sempre 0 o
False
per false e 1 oTrue
per true, se non diversamente specificato. (Importante eccezione: le operazioni booleane "o" e "e" restituiscono sempre uno dei loro operandi.)
https://docs.python.org/2/library/stdtypes.html#truth-value-testing
E come accennato, è possibile ignorare con oggetti personalizzati modificando diverso da zero.
Aggiornamento: rimosso tutti infomation duplicato con il post di Meder
Per oggetti personalizzati in Python < 3.0 __nonzero__
per modificare la modalità di valutazione ed. In Python 3.0 questo è __bool__
(Reference tramite e-satis)
È importante capire cosa si intende per valutare. Un significato è quando un oggetto è esplicitamente lanciato su un bool o implicitamente lanciato dalla sua posizione (in un ciclo if o while).
Un'altra è la valutazione ==. 1 == True, 0 == False, nient'altro è uguale tramite ==.
>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False
Infine, per è, solo True o False sono essi stessi.
Gli oggetti personalizzati possono restituire Vero/Falso per la valutazione booleana implementando __nonzero__ – dcrosta
Solo necessario notare che in Python 3.0 '__bool__' deve essere sovrascritto invece – Casebash
I documenti che citi sono imprecisi (o incompleti); ad esempio, gli insiemi non sono né sequenze né mappature, tuttavia, quando sono vuoti, sono anche falsi. Vorrei comprimere quelle due linee (coprendo anche il caso dei set) a "qualsiasi vuoto ** contenitore **". –