2009-11-17 13 views
70

Python contiene effettivamente un valore booleano? So che si può fare:Booleano in Python

checker = 1 
if checker: 
    #dostuff 

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

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

C'è una cosa come questa in Python? Non riesco a trovare nulla di simile nella documentazione.

+1

Ricorda ... non è necessario dichiarare i tipi durante la creazione di una variabile . Solo 'checker = False' sarà sufficiente. –

+7

@Dominic Bou-Samra: "non è necessario dichiarare i tipi"? Non è del tutto vero. Penso che dovresti dire "non puoi dichiarare un tipo per una variabile". –

risposta

92
checker = None # not necessary 

if some_decision: 
    checker = True 

if checker: 
    # some stuff 

[Edit]

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

Il tuo codice funziona troppo, dal momento che 1 viene convertito in True quando necessario. In realtà Python non ha avuto un tipo booleano per molto tempo (come nella vecchia C), e alcuni programmatori utilizzano i numeri interi anziché i booleani.

+14

Di solito è più semplice usare checker = (some_decision) (ad esempio checker = (a MAK

+7

questo snippet è un po 'fuorviante ... è ancora necessario definire "correttore" prima di testarlo. Mentre OP lo definisce prima, nel tuo esempio checker = None è assolutamente necessario o otterrai un UnboundLocalError – dprogramz

+0

I booleani Python sono numeri interi. 'True' e' False' sono riferimenti ad oggetti 'int' estesi con overriden' __str__' e '__repr__'. –

78

I builtin booleani sono in maiuscolo: True e False.

Si noti inoltre che si può fare checker = bool(some_decision) come un po 'di stenografia - bool sarà sempre e solo tornare True o False.

È bene sapere per riferimento futuro che classes defining __nonzero__ or __len__ saranno True o False seconda del risultato di tali funzioni, ma praticamente risultato booleano di ogni altro oggetto sarà True (tranne per l'oggetto None, sequenze vuote, e zeri numerici) .

+1

Grazie mille per l'intuizione. Dato che il voto popolare è passato all'altra risposta, ho assegnato a Bastien la "risposta accettata". Comunque il tuo è stato molto utile! :) – Federer

+21

bravado: che senso ha non accettare la risposta che trovi più utile? È del tutto irrilevante se un'altra risposta viene potenziata di più. – tzot

+2

E il voto popolare è anche con questa risposta. Considera di cambiare il tuo voto. –

5

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

Citato da doc:

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

Sono scritte rispettivamente come false e vere.

Così nel codice Java rimuovere le parentesi graffe, cambiare true a True e sarete ok :)

+0

+1, questo è il tipo di citazione che stavo cercando per la mia risposta. –

10

True ... e False ovviamente.

In caso contrario, None restituisce False, così come il numero intero 0 e anche il float 0.0 (anche se non utilizzerei i float come quello). Inoltre, gli elenchi vuoti [], i gruppi irregolari vuoti () e le stringhe vuote '' o "" valutano su False.

Provate da soli 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) 

ecc ..

3

Sì, c'è un tipo di dati bool (che eredita da int e ha solo due valori: True e False).

Ma anche Python ha il concetto boolean-able per ogni oggetto, che viene utilizzato quando viene chiamata la funzione bool([x]).

Altre informazioni: object.nonzero e boolean-value-of-objects-in-python.

+0

x = bool (0) # false && x = bool (1) # true –

0

A differenza di Java, dove si dichiara boolean flag = True, in Python si può semplicemente dichiarare myFlag = True

Python sarebbe interpretare questo come un valore booleano variabile