Come si usa un booleano in Python?


109

Python contiene effettivamente un valore booleano? So che puoi fare:

checker = 1
if checker:
    #dostuff

Ma sono abbastanza pedante e mi piace vedere i booleani in Java. Per esempio:

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

Esiste qualcosa come un booleano in Python? Non riesco a trovare nulla di simile nella documentazione.


1
Ricorda ... non è necessario dichiarare i tipi quando si crea una variabile. Basta 'checker = False'.
Dominic Bou-Samra,

10
@Dominic Bou-Samra: "non hai bisogno di dichiarare i tipi"? Non è del tutto vero. Penso che dovresti dire "non puoi dichiarare un tipo per una variabile".
S.Lott

2
@ S.Lott "non puoi dichiarare un tipo per una variabile" ... ancora non vero perché puoi typecast some_var = int("1234")... quella riga imposta esplicitamente some_var=>int
Kolob Canyon

Risposte:


142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Modificare]

Per ulteriori informazioni: http://docs.python.org/library/functions.html#bool

Anche il tuo codice funziona, poiché 1viene convertito in Truequando necessario. In realtà Python non ha avuto un tipo booleano per molto tempo (come nel vecchio C), e alcuni programmatori usano ancora numeri interi invece di booleani.


17
Di solito è più semplice usare checker = (some_decision) (es. Checker = (a <b)), invece di un 'if'.
MAK

11
questo frammento è un po 'fuorviante ... devi ancora definire "checker" prima di testarlo. Mentre OP lo definisce in precedenza, nel tuo esempio checker = None è assolutamente necessario o otterrai un UnboundLocalError
dprogramz

I booleani Python sono numeri interi. Truee Falsesono riferimenti a intoggetti estesi con sovrascrittura __str__e __repr__.
Mad Physicist

I booleani Python non sono numeri interi; 1 is not True, ma 1 == True.
Ballpoint

@BallpointBen: sono numeri interi nel senso comune di essere istanze del inttipo, come mostrato da isinstance(True, int).
Bastien Léonard

93

I valori predefiniti booleani sono in maiuscolo: Truee False.

Nota anche che puoi fare checker = bool(some_decision)un po 'di stenografia - booltornerà sempre e solo Trueo False.

È bene sapere per riferimento futuro che le classi__nonzero____len__ che definiscono o saranno Trueo Falsedipendono dal risultato di quelle funzioni, ma virtualmente il risultato booleano di ogni altro oggetto sarà True(eccetto per l' Noneoggetto, le sequenze vuote e gli zeri numerici).


1
Grazie mille per l'intuizione. Poiché il voto popolare è passato all'altra risposta, ho assegnato a Bastien la "Risposta accettata". Comunque il tuo è stato di grande aiuto! :)
Federer

23
spavalderia: che senso ha non accettare la risposta che trovi più utile? È totalmente irrilevante se un'altra risposta viene votata di più.
tzot

2
E il voto popolare è anche con questa risposta. Valuta la possibilità di modificare il tuo voto.
Alastor Moody

12

True... e Falseovviamente.

Altrimenti, Nonerestituisce False, così come il numero intero 0e anche il float 0.0(anche se non userei float in questo modo). Inoltre, elenchi vuoti [], gruppi irregolari ()vuoti e stringhe vuote ''o restituiscono ""False.

Prova tu stesso con la funzione bool():

bool([])
bool(['a value'])
bool('')
bool('A string')
bool(True)  # ;-)
bool(False)
bool(0)
bool(None)
bool(0.0)
bool(1)

eccetera..


5

I tipi booleani sono definiti nella documentazione:
http://docs.python.org/library/stdtypes.html#boolean-values

Citato dal documento:

I valori booleani sono i due oggetti costanti False e True. Sono usati per rappresentare valori di verità (sebbene anche altri valori possano essere considerati falsi o veri). In contesti numerici (ad esempio quando usati come argomento di un operatore aritmetico), si comportano come gli interi 0 e 1, rispettivamente. La funzione incorporata bool () può essere utilizzata per eseguire il cast di qualsiasi valore in un booleano, se il valore può essere interpretato come un valore di verità (vedere la sezione Test del valore di verità sopra).

Sono scritti rispettivamente come False e True.

Quindi nel codice Java rimuovi le parentesi graffe, cambia truein Truee sarai ok :)



0

A differenza di Java in cui dichiareresti boolean flag = True, in Python puoi semplicemente dichiararemyFlag = True

Python lo interpreterà come una variabile booleana

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.