Was ist besser? (Und warum?)Was ist der richtige Weg, um nach False zu suchen?
if somevalue == False:
oder
if somevalue is False:
Ist Ihre Antwort ändern, wenn somevalue
ist ein String?
Was ist besser? (Und warum?)Was ist der richtige Weg, um nach False zu suchen?
if somevalue == False:
oder
if somevalue is False:
Ist Ihre Antwort ändern, wenn somevalue
ist ein String?
Es hängt vielmehr von was somevalue
sein kann: wenn somevalue
alles sein könnte Sie überprüfen können, dass es sich um ein boolean ist und not
:
if isinstance(somevalue, bool) and not somevalue
dies beruht nicht auf False
ein Singleton sein. Wenn es immer ein Singleton ist, können Sie auch tun:
if somevalue is False
Aber PEP8 von Python sagt man, wenn es um die Klasse nicht kümmern sollte und nur verwenden:
if not somevalue
dieses wertet aus, ob somevalue
"falsy" ist. Siehe Python documentation on Truth value testing.
PEP8 Zustände:
nicht vergleichen Boolesche Werte Wahr oder Falsch mit ==.
und gibt diese Beispiele:
Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True:
, die in Ihrem Fall übersetzt:
Yes: if not greeting:
No: if greeting == False:
Worse: if greeting is False:
Beachten Sie, dass jede Zeichenfolge "truthy" mit Ausnahme der leeren String ''
betrachtet wird.
is
überprüft, ob zwei Objekte buchstäblich das gleiche Objekt sind. ==
prüft auf Gleichheit.
Wenn Sie überprüfen möchten, ob etwas falsch ist, z. null, gegenüber von True
, tun if something == False
.
Wie in den Kommentaren erwähnt, können Sie sicherlich tun if not something
, kann es die Lesbarkeit ein wenig verbessern, aber es ist das gleiche wie if bool(something) == False
.
Ich ziehe es Gleichheit, weil, meiner Meinung nach, True
und False
sollte wie 1
und 0
in Bezug auf sein wahr oder falsch verhalten. Zum Beispiel ("a" == "a") == False
wertet False
wie ("a" == "a") == 0
aus.
mm, 'wenn nicht etwas '? – vaultah
@vaultah, ja, aber wenn die Frage wie folgt lautet: Wählen Sie entweder '==' entweder 'ist', es ist besser,' == ' – ForceBru
* zu verwenden, aber es ist dasselbe wie' wenn etwas == Falsch' *, nein. Es ist das gleiche wie 'if bool (etwas) == False'. – vaultah
Klingt viel zu oft. – firegurafiku
Ich würde 'wenn nicht somevalue:' schreiben, obwohl es sich bei nicht booleschen Typen anders verhält: 'if not" ":' wird den Code ausführen, aber 'if" "== False:' wird nicht. – rodrigo
Normalerweise werden Objekte in Python nicht explizit mit 'False' /' True' verglichen. Tun Sie einfach 'if somevalue:' oder 'if not somevalue:' –