2016-05-08 27 views
5

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?

+2

Klingt viel zu oft. – firegurafiku

+5

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

+0

Normalerweise werden Objekte in Python nicht explizit mit 'False' /' True' verglichen. Tun Sie einfach 'if somevalue:' oder 'if not somevalue:' –

Antwort

4

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.

3

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.

+1

mm, 'wenn nicht etwas '? – vaultah

+0

@vaultah, ja, aber wenn die Frage wie folgt lautet: Wählen Sie entweder '==' entweder 'ist', es ist besser,' == ' – ForceBru

+1

* zu verwenden, aber es ist dasselbe wie' wenn etwas == Falsch' *, nein. Es ist das gleiche wie 'if bool (etwas) == False'. – vaultah

Verwandte Themen