Regulärer Ausdruck: verschachtelte Klammer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-D
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Bei der einen Variante muß man nur != sehen und weiß bescheit...
Beim andern muß man das not zusammen mit dem == sehen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?:

Code: Alles auswählen

if(!a) {
    // wat auch immer
}
Wie oft habe ich so was schon übersehen...
im Vergelich dazu gefällt mir das explizite "not" in Python sehr gut:

Code: Alles auswählen

if not a:
    # usw.
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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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:

Code: Alles auswählen

if ( !(a == b) )
gegen

Code: Alles auswählen

 if not a == b:
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.
Zuletzt geändert von cofi am Sonntag 17. Januar 2010, 15:38, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Mir gefällt das if not x == y besser
Hyperion hat geschrieben:.. oder willst Du genau folgendes ausblenden?:

Code: Alles auswählen

if(!a) {
    // wat auch immer
}
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 :D
Zum Glück :)
the more they change the more they stay the same
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.
Jack Daniels
User
Beiträge: 30
Registriert: Freitag 1. Januar 2010, 11:38

Wie man wegen zwei Zeichen streiten kann... :D

Danke für die Verbesserungsvorschläge, ich bin Basic-beeinflusst :wink:. Python-Style schrieben ist noch ungewohnt.
Antworten