2013-05-24 14 views
85

Jestem nieco zdezorientowany, w jaki sposób/dlaczego tak wielu programistów python używa if not w swoich instrukcjach warunkowych.Python "Jeśli nie" składnia

na przykład, powiedzmy, że mieliśmy funkcji

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

Ale dlaczego go o tej drodze? Chodzi mi o to, czy nie zrobiłoby się bardziej jednoznacznie? Co próbuje powiedzieć if not?

+1

To pytanie zostało zadane przed obejrzeniem: http://stackoverflow.com/questions/100732/why-is-if-not-someobj-better-than-if-someobj-none-in-python – jlars62

+3

Ponieważ "jeśli nie" sprawdza prawdę i "! =" sprawdza równość. – ecline6

Odpowiedz

106

Tak, if bar is not None jest bardziej jednoznaczny, a przez to lepszy, zakładając, że rzeczywiście jest to, czego chcesz. Nie zawsze tak jest, istnieją subtelne różnice: zostanie wykonane, jeśli bar jest dowolnym rodzajem zerowego lub pustego kontenera, lub False. Wiele osób używa not bar, gdzie naprawdę robi oznacza bar is not None.

+0

Więc jeśli pasek to '[]', to będzie on wykonany? –

+1

@EdgarAroutiounian Tak. Takie same lub puste zestawy, krotki, słowniki, łańcuchy itp. – delnan

Powiązane problemy