2013-05-24 4 views
85

Ich bin ein wenig verwirrt darüber, wie/warum so viele Python-Entwickler if not in ihren bedingten Anweisungen verwenden.Python 'Wenn nicht' Syntax

zum Beispiel kann sagen, wir eine Funktion haben,

def foo(bar = None): 
    if not bar: 
     bar = 2 

Aber warum diesen Weg gehen? Ich meine, würde if bar != None oder if bar is not None nicht expliziter sein? Was versucht if not zu sagen?

+1

Diese Frage vor Blick hier gefragt wurde: http://stackoverflow.com/questions/100732/why-is-if-not-someobj-better-than-if-someobj-none-in-python – jlars62

+3

Weil "Wenn nicht" überprüft die Wahrheit und "! =" prüft auf Gleichheit. – ecline6

Antwort

106

Ja, if bar is not None ist expliziter und somit besser, vorausgesetzt, es ist in der Tat, was Sie wollen. Das ist nicht immer der Fall, es gibt feine Unterschiede: if not bar: wird ausgeführt, wenn bar eine beliebige Art von Null oder leeren Container oder False ist. Viele Leute verwenden not bar, wo sie wirklich tun bedeuten bar is not None.

+0

Also, wenn bar ist '[]', dann wird es ausgeführt? –

+1

@EdgarArotiounian Ja. Gleiche oder leere Mengen, Tupel, Wörterbücher, Strings usw. – delnan