2009-11-17 9 views
70

Enthält Python tatsächlich einen booleschen Wert? Ich weiß, dass Sie tun können:Boolean in Python

Aber ich bin ziemlich pedantisch und genieße es, Booleans in Java zu sehen. Zum Beispiel:

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

Gibt es so etwas in Python? Ich kann nichts dergleichen in der Dokumentation finden.

+1

Denken Sie daran ... Sie brauchen keine Arten zu erklären, wenn eine Variable zu schaffen . Nur 'checker = False' wird ausreichen. –

+7

@Dominic Bou-Samra: "Sie müssen keine Typen deklarieren"? Das ist nicht ganz richtig. Ich denke, du solltest sagen: "Du kannst unmöglich einen Typ für eine Variable deklarieren." –

Antwort

92
checker = None # not necessary 

if some_decision: 
    checker = True 

if checker: 
    # some stuff 

[Bearbeiten]

Für weitere Informationen: http://docs.python.org/library/functions.html#bool

Ihr Code funktioniert auch, da 1 auf True umgewandelt wird, wenn notwendig. Eigentlich hatte Python lange keinen booleschen Typ (wie in altem C), und einige Programmierer verwenden statt booleschen Werten ganze Zahlen.

+14

Es ist normalerweise einfacher, checker = (some_decision) (z. B. checker = (a MAK

+7

dieses Snippet ist ein bisschen irreführend ... Sie müssen noch "checker" definieren, bevor Sie es testen. Während OP es früher definiert, ist in Ihrem Beispiel checker = None absolut notwendig oder Sie erhalten einen UnboundLocalError – dprogramz

+0

Python booleans sind Ganzzahlen. 'True' und' False' sind Verweise auf erweiterte 'int' Objekte mit überschriebenen' __str__' und '__repr__'. –

78

Die booleschen Builtins werden groß geschrieben: True und False.

Beachten Sie auch, dass Sie checker = bool(some_decision) als ein bisschen Stenografie tun kann - bool wird immer nur True oder False zurückzukehren.

Es ist gut für die Zukunft zu wissen, dass classes defining __nonzero__ or __len__True oder False auf dem Ergebnis dieser Funktionen abhängig sein wird, aber so gut wie jeder andere wird True boolean Ergebnis des Objekts sein (mit Ausnahme des None Objekt, leere Sequenzen und numerische Nullen) .

+1

Vielen Dank für die Einsicht. Da die Abstimmung der Bevölkerung zu der anderen Antwort gewechselt hat, habe ich Bastien die "Accepted Answer" -Auszeichnung gegeben. Aber deine war sehr hilfreich! :) – Federer

+21

bravado: Was ist der Punkt, der nicht die Antwort akzeptiert, die Sie am hilfreichsten finden? Es ist völlig irrelevant, ob eine andere Antwort mehr aufgeschlagen ist. – tzot

+2

Und die Volksabstimmung ist auch mit dieser Antwort. Überlege, deine Stimme zu ändern. –

5

Boolesche Typen sind in der Dokumentation definiert:
http://docs.python.org/library/stdtypes.html#boolean-values

von doc Zitat:

Boolesche Werte die beiden konstanten Objekte falsch und wahr sind. Sie werden verwendet, um Wahrheitswerte darzustellen (obwohl andere Werte auch als falsch oder wahr betrachtet werden können). In numerischen Kontexten (zum Beispiel als Argument für einen arithmetischen Operator) verhalten sie sich wie die Ganzzahlen 0 und 1. Die eingebaute Funktion bool() kann verwendet werden, um einen beliebigen Wert in einen booleschen Wert umzuwandeln, wenn der Wert als Wahrheitswert interpretiert werden kann (siehe Abschnitt Wahrheitstest oben).

Sie werden als False bzw. True geschrieben.

So in Java-Code zu entfernen Klammern, ändern true zu True und Sie werden in Ordnung sein :)

+0

+1, das ist die Art von Zitat, das ich für meine eigene Antwort gesucht habe. –

10

True ... und False offensichtlich.

Ansonsten wertet None zu False, so wie die Ganzzahl 0 und auch der Float 0.0 (obwohl ich Schwimmer wie diese nicht verwenden würde). Auch leere Listen [], leere N-tolen () und leere Zeichenfolgen '' oder "" bewerten zu False.

Probieren Sie es selbst mit der Funktion bool():

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

etc ..

3

Ja, es ist ein bool Datentyp (die von int erbt und hat nur zwei Werte: True und False).

Aber auch Python hat das boolean-able Konzept für jedes Objekt, das verwendet wird, wenn die Funktion bool([x]) aufgerufen wird.

Weitere Informationen: object.nonzero und boolean-value-of-objects-in-python.

+0

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

0

Im Gegensatz zu Java, wo Sie boolean flag = True, in Python erklären würden Sie nur myFlag = True

erklären kann

Python würde dies als boolean

Variable interpretieren