2009-09-21 14 views

risposta

18

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 valore False 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 o True 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.

+5

Solo necessario notare che in Python 3.0 '__bool__' deve essere sovrascritto invece – Casebash

+7

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 **". –

8

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.

+0

Gli oggetti personalizzati possono restituire Vero/Falso per la valutazione booleana implementando __nonzero__ – dcrosta

Problemi correlati