Seite 1 von 2
Verfasst: Sonntag 17. Januar 2010, 15:05
von Hyperion
jens hat geschrieben:Dav1d hat geschrieben:wieso verwendet man eig. immer dieses hässliche if x != i-was und nicht if not x == i-was
Weil schneller zu schreiben und irgendwie auch klarer...
Du findest ein einzelnes Zeichen klarer als ein "not"? Nuja, Gehirne arbeiten halt unterschiedlich

Verfasst: Sonntag 17. Januar 2010, 15:09
von jens
Bei der einen Variante muß man nur != sehen und weiß bescheit...
Beim andern muß man das not zusammen mit dem == sehen...
Verfasst: Sonntag 17. Januar 2010, 15:22
von Hyperion
jens hat geschrieben:Bei der einen Variante muß man nur != sehen und weiß bescheit...
Beim andern muß man das not zusammen mit dem == sehen...
Und wo liegt jetzt der Unterschied? "not" sagt einem sofort das gleiche wie "!". Der Boolsche Folgewert soll verneint werden. Der Vergleich ist da ja eher unerheblich - oder willst Du genau folgendes ausblenden?:
Wie oft habe ich so was schon übersehen...
im Vergelich dazu gefällt mir das explizite "not" in Python sehr gut:
Ob "a" nun eine einzelne Variable oder ein Ausdruck ist, spielt für mich da keine große Rolle - aber bei einer einzelnen, evtl. auch einer aus mehreren zeichen bestehenden Variablen wird die Lesbarkeit imho sehr schlecht.
Verfasst: Sonntag 17. Januar 2010, 15:38
von cofi
Ich muss mich jens anschliessen.
Wenn man schon einen Ungleich-Operator hat, braucht man den nicht durch das inverse des Gleichheit-Operators zu simulieren.
Dass du das auf `!` gegen `not` herunterbrichst ist falsch, denn das ist gar nicht der Punkt.
Das Problem bei `not x == y` ist, dass man auf 2 Stellen statt auf eine achten muss, gleichzeitig muss man sich auch noch die Frage nach der Operator-Praezedenz stellen.
Der Vergleich mit C-artigem muesste uebrigens wie folgt lauten:
gegen
P.S. die "explizite" Variante widerspricht meiner Meinung gegen folgendes aus dem Python-Zen
import this hat geschrieben:Simple is better than complex.Flat is better than nested.
Sparse is better than dense.
Readability counts.
Verfasst: Sonntag 17. Januar 2010, 15:38
von jens
if not a: nutzte ich auch immer, aber es ist was anderes als if not a == foo: und da mache ich halt lieber ein if a != foo:
Verfasst: Sonntag 17. Januar 2010, 16:07
von Dav1d
Mir gefällt das
if not x == y besser
Hyperion hat geschrieben:.. oder willst Du genau folgendes ausblenden?:
Wie oft habe ich so was schon übersehen...
wahrscheinlich, Irgendwie finde ich das
!= hässlich und
not finde ich ist auch klarer
Hyperion hat geschrieben:Du findest ein einzelnes Zeichen klarer als ein "not"? Nuja, Gehirne arbeiten halt unterschiedlich

Zum Glück

Verfasst: Sonntag 17. Januar 2010, 16:41
von lunar
"a != b" ist nicht dasselbe wie "not a == b":
>>> class Spam(object):
def __eq__(self, other):
return True
def __ne__(self, other):
return True
...:
>>> Spam() == Spam()
True
>>> Spam() != Spam()
True
>>> not Spam() == Spam()
False
Es ist eben ein Unterschied, ob Objekte "nicht gleich" sind, oder "ungleich". Es lassen sicherlich Probleme finden, bei denen man aus dem Fehlen der Gleichheit nicht sofort Ungleichheit folgern kann, sondern vielleicht nur erstmal die Unmöglichkeit, die Gleichheit zweier Objekte zu bestimmen.
Verfasst: Sonntag 17. Januar 2010, 17:03
von Jack Daniels
Wie man wegen zwei Zeichen streiten kann...
Danke für die Verbesserungsvorschläge, ich bin Basic-beeinflusst

. Python-Style schrieben ist noch ungewohnt.