Seite 1 von 1
syntaktisches
Verfasst: Donnerstag 7. Mai 2009, 10:13
von hendrikS
Neulich in den unendlichen Weiten des Internets gefunden:
Einige kennen sicher die folgende Kombination von Vergleichsoperatoren:
zum Ausdruck bringend
Möglicherweise ist nicht jedem klar, dass dies auch mit anderen Vergleichsoperatoren geht. Z.Bsp.
zum Ausdruck bringend
Verfasst: Donnerstag 7. Mai 2009, 12:02
von derdon
Wenn du dich so darüber freust, so eine Möglichkeit entdeckt zu haben, wäre es fair, die Quelle zu nennen.
Verfasst: Donnerstag 7. Mai 2009, 12:15
von Nocta
Das ist ja echt cool ..
Ich hatte erwartet, dass
also
entsprechen würde, also false ergeben müsste.
Verfasst: Donnerstag 7. Mai 2009, 12:37
von lunar
Auf die Anwendung dieses "Tricks" würde ich aber zwecks Lesbarkeit verzichten. "2 < a < c" kennt jeder aus der Mathematik, "2 < a in [1, 2, 3]" dagegen ist etwas "mystisch", ich hätte das auf den ersten Blick genauso wie Nocta gelesen.
Verfasst: Donnerstag 7. Mai 2009, 13:53
von birkenfeld
derdon hat geschrieben:Wenn du dich so darüber freust, so eine Möglichkeit entdeckt zu haben, wäre es fair, die Quelle zu nennen.
Die Python-Dokumentation?
Verfasst: Donnerstag 7. Mai 2009, 14:04
von derdon
Ok, bei "den unendlichen Weiten des Internets" habe ich nicht so etwas offensichtliches erwartet.
Verfasst: Donnerstag 7. Mai 2009, 19:21
von Nocta
Ich finde diese Schreibweise auch ziemlich ungeschickt. Es erfüllt meiner Meinung nach nicht das Einfachheits und Lesbarkeitsprinzip von Python. Es ist auch nicht intuitiv, wie lunar mir auch schon zugestimmt hat, da man hier ein anderes Ergebnis erwartet.
Die vollständige Schreibweise ist imho auch nicht so viel Länger:
Außer natürlich man nutzt diese Syntax etwas stärker und "verschachtelt" die in's:
Code: Alles auswählen
2 < a in [2,3,4] in [2,3,4,5] in [2,3,4,5,6] ...
==>
2 < a and a in [2,3,4] and [2,3,4] in [2,3,4,5] and [2,3,4,5] in [2,3,4,5,6] ...
PS:
Wenn die Klammern die Operatorenreihenfolge verändern würden (mit Klammern kommt das erwartete Ergebnis), könnte man das ganze ja noch einigermaßen nachvollziehen, aber das wird ja hier so weit ich das sehe auch nicht gemacht. Deshalb ist es auch ziemlich unerwartet, dass sich durch die Klammern (die ja in logischer Sicht nichts ändern), etwas völlig anderes ergibt als ohne bzw andersrum.
Verfasst: Donnerstag 7. Mai 2009, 19:32
von birkenfeld
Nocta hat geschrieben:Ich finde diese Schreibweise auch ziemlich ungeschickt. Es erfüllt meiner Meinung nach nicht das Einfachheits und Lesbarkeitsprinzip von Python.
Nein, aber es erfüllt das Konsistenzprinzip. Die Grammatik spezifiziert
und nachdem "<" und Verwandte, "in" und "is" und ihre Verneinungen alles "comp_op"s sind, ist das zulässig. Eine andere Möglichkeit wäre natürlich, die Priorität von "in" zu ändern, aber dann hat man genauso ein Zweideutigkeitsproblem, nämlich wo genau die impliziten Klammern stehen. "in" ist nunmal kein Operator, dem wir "intuitiv" eine Rangfolge zuweisen wie "+" oder "*".
Es ist auch nicht intuitiv, wie lunar mir auch schon zugestimmt hat, da man hier ein anderes Ergebnis erwartet.
Ich hoffe auch, dass es niemand mit "in" (oder "is") verwendet.
Verfasst: Donnerstag 7. Mai 2009, 20:18
von Nocta
birkenfeld hat geschrieben:Nein, aber es erfüllt das Konsistenzprinzip. Die Grammatik spezifiziert
Konsistenz im Sinne von Widerspruchsfrei oder Vollständigkeit oder was ist genau gemeint?
Naja, vielleicht ist es konsequent, es zuzulassen, dass der Operator in dieser Art und Weise eingesetzt werden kann. Ich kann das nicht beurteilen, ich habe auch keine Theorie studiert

Da gibt es dann wahrscheinlich auch keinen Kompromiss. Es wegzulassen würde die Sprache dann "unvollständig" oder "unperfekt" machen und es zuzulassen, würde eben diese Einfachheit und Lesbarkeit irgendwie beeinträchtigen.
Aber da sowieso nie jemand "in" und irgendwelche mathematischen Operatoren gleichzeitig benutzt ist's auch egal

Verfasst: Donnerstag 7. Mai 2009, 20:23
von birkenfeld
Nocta hat geschrieben:birkenfeld hat geschrieben:Nein, aber es erfüllt das Konsistenzprinzip. Die Grammatik spezifiziert
Konsistenz im Sinne von Widerspruchsfrei oder Vollständigkeit oder was ist genau gemeint?
Eher im Sinne von "es sind keine zusätzlichen Ausnahmen nötig". "Konsequenz" wäre vielleicht sogar das richtigere Wort.