Wie verwende ich einen Booleschen Wert in Python?

109

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

checker = 1
if checker:
    #dostuff

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

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

Gibt es in Python einen Booleschen Wert? Ich kann so etwas in der Dokumentation nicht finden.

Federer
quelle
1
Denken Sie daran, dass Sie beim Erstellen einer Variablen keine Typen deklarieren müssen. Nur 'checker = False' wird ausreichen.
Dominic Bou-Samra
10
@ Dominic Bou-Samra: "Sie müssen keine Typen deklarieren"? Das stimmt nicht ganz. Ich denke, Sie sollten sagen "Sie können unmöglich einen Typ für eine Variable deklarieren."
S.Lott
2
@ S.Lott "Sie können unmöglich einen Typ für eine Variable deklarieren" ... immer noch nicht wahr, weil Sie typisieren können some_var = int("1234")... diese Zeile setzt explizit some_var=>int
Kolob Canyon

Antworten:

142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Bearbeiten]

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

Ihr Code funktioniert auch, da 1er Truebei Bedarf in konvertiert wird . Tatsächlich hatte Python lange Zeit keinen booleschen Typ (wie im alten C), und einige Programmierer verwenden immer noch ganze Zahlen anstelle von booleschen Werten.

Bastien Léonard
quelle
17
Es ist normalerweise einfacher, checker = (some_decision) (z. B. checker = (a <b)) anstelle eines 'if' zu verwenden.
MAK
11
Dieses Snippet ist etwas 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
Python-Boolesche Werte sind Ganzzahlen. Trueund Falsesind Verweise auf erweiterte intObjekte mit Überschreibung __str__und __repr__.
Mad Physicist
Python-Boolesche Werte sind keine ganzen Zahlen. 1 is not True, aber 1 == True.
BallpointBen
@BallpointBen: Es handelt sich um Ganzzahlen im üblichen Sinne, um Instanzen des intTyps zu sein, wie in gezeigt isinstance(True, int).
Bastien Léonard
93

Die booleschen Buildins werden großgeschrieben: TrueundFalse .

Beachten Sie auch, dass Sie checker = bool(some_decision)als kleine Abkürzung tun können - boolwird immer nur zurückkehren TrueoderFalse .

Zum späteren Nachschlagen ist es gut zu wissen, dass Klassen__nonzero____len__ das Ergebnis dieser Funktionen definieren oder sein werden Trueoder davon Falseabhängen, aber praktisch das boolesche Ergebnis jedes anderen Objekts True(mit Ausnahme des NoneObjekts, leerer Sequenzen und numerischer Nullen).

Mark Rushakoff
quelle
1
Vielen Dank für den Einblick. Da die Volksabstimmung auf die andere Antwort übergegangen ist, habe ich Bastien die "Akzeptierte Antwort" verliehen. Ihre war jedoch sehr hilfreich! :)
Federer
23
Bravado: Was bringt es, die Antwort, die Sie am hilfreichsten finden, nicht zu akzeptieren? Es ist völlig irrelevant, ob eine andere Antwort mehr positiv bewertet wird.
tzot
2
Und die Volksabstimmung ist auch mit dieser Antwort. Erwägen Sie, Ihre Stimme zu ändern.
Alastor Moody
12

True... und Falsenatürlich.

Andernfalls wird NoneFalse ausgewertet, ebenso wie die Ganzzahl 0und auch der Float 0.0(obwohl ich solche Floats nicht verwenden würde). Auch leere Listen [], leere Tuplets ()und leere Zeichenfolgen ''oder ""als falsch auswerten.

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..

Terje Dahl
quelle
5

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

Zitiert aus doc:

Boolesche Werte sind die beiden konstanten Objekte False und True. Sie werden verwendet, um Wahrheitswerte darzustellen (obwohl andere Werte auch als falsch oder wahr angesehen werden können). In numerischen Kontexten (z. B. wenn sie als Argument für einen arithmetischen Operator verwendet werden) verhalten sie sich wie die Ganzzahlen 0 bzw. 1. Die integrierte Funktion bool () kann verwendet werden, um einen beliebigen Wert in einen Booleschen Wert umzuwandeln, wenn der Wert als Wahrheitswert interpretiert werden kann (siehe Abschnitt Testen von Wahrheitswerten oben).

Sie werden als Falsch bzw. Wahr geschrieben.

So in Java - Code entfernen Zahnspange, ändern truezu Trueund Sie werden in Ordnung sein :)

Anurag Uniyal
quelle
4

Ja, es gibt einen boolDatentyp (der von intnur zwei Werten erbt und diese hat: TrueundFalse ).

Aber auch Python hat das boolean-ableKonzept für jedes Objekt, das beim bool([x])Aufruf der Funktion verwendet wird.

Weitere Informationen: Objekt. ungleich Null und boolescher Wert von Objekten in Python .

van
quelle
x = bool (0) # false && x = bool (1) # true
Julian
0

Im Gegensatz zu Java, wo Sie deklarieren würden, boolean flag = Truekönnen Sie in Python nur deklarierenmyFlag = True

Python würde dies als boolesche Variable interpretieren

Codierer
quelle