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.


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.


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


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


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 :)



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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.