Seite 1 von 2

With-Statement

Verfasst: Samstag 26. April 2008, 11:51
von gerold
Edit (Leonidas): Diskussion von "Wann ist es Threadsafe" abgetrennt.

Hallo!

Ich empfehle *with* erst dann, wenn ich es nicht mehr mit
``from __future__ import with_statement`` importieren muss.

lg
Gerold
:-)

Verfasst: Samstag 26. April 2008, 11:56
von EyDu
Dann solltest du dir vielleicht 2.5 installieren ;-)

Verfasst: Samstag 26. April 2008, 12:17
von gerold
EyDu hat geschrieben:Dann solltest du dir vielleicht 2.5 installieren ;-)
Hallo EyDu!

Neue Server statte ich mit Ubuntu aus sobald die ersten Updates für "Ubuntu 8.04" verfügbar sind. Bis dahin bleibe ich noch bei Debian und bei Python 2.4.4.

Die meisten Kunden habe ich schon auf Python 2.5. Es fehlen nur mehr wenige. Es wird!

lg
Gerold
:-)

Verfasst: Samstag 26. April 2008, 12:42
von Leonidas
gerold hat geschrieben:Ich empfehle *with* erst dann, wenn ich es nicht mehr mit
``from __future__ import with_statement`` importieren muss.
Warum?

Verfasst: Samstag 26. April 2008, 12:53
von gerold
Leonidas hat geschrieben:
gerold hat geschrieben:Ich empfehle *with* erst dann, wenn ich es nicht mehr mit
``from __future__ import with_statement`` importieren muss.
Warum?
Hallo Leonidas!

Da ich es selber noch nicht verwende, fühlt es sich nicht gut an wenn ich es anderen empfehle. Das ist alles. :-)

lg
Gerold
:-)

Verfasst: Samstag 26. April 2008, 12:56
von Leonidas
gerold hat geschrieben:Da ich es selber noch nicht verwende, fühlt es sich nicht gut an wenn ich es anderen empfehle.
Ok, dann formuliere ich die Frage anders: warum nutzt du es nicht? Es ist in meinen Augen oft nützlich, im Locking-Beispiel sogar mehr noch als im Dateizugriff-Beispiel.

Verfasst: Samstag 26. April 2008, 13:21
von gerold
Leonidas hat geschrieben:Ok, dann formuliere ich die Frage anders: warum nutzt du es nicht? Es ist in meinen Augen oft nützlich, im Locking-Beispiel sogar mehr noch als im Dateizugriff-Beispiel.
Hallo Leonidas!

Schade, dass das hier so eine nichtssagende Stammtischdiskussion wird.

Ich verwende keine Future-Imports, da sich diese im Gebrauch für mich so anfühlen, als ob ich Beta-Tester wäre. Ich verwende neue Befehle normalerweise erst dann, wenn sie die ersten Kinderkrankheiten überstanden haben. Ein ``from __future__ import with_statement`` verwende ich also aus Prinzip nicht.

Ich werde das "with"-Statement schon noch kritisch unter die Lupe nehmen. Nur jetzt noch nicht.

lg
Gerold
:-)

Verfasst: Samstag 26. April 2008, 13:30
von Leonidas
gerold hat geschrieben:Schade, dass das hier so eine nichtssagende Stammtischdiskussion wird.
Thread getrennt, jetzt passts wieder. :)
gerold hat geschrieben:Ich verwende keine Future-Imports, da sich diese im Gebrauch für mich so anfühlen, als ob ich Beta-Tester wäre. Ich verwende neue Befehle normalerweise erst dann, wenn sie die ersten Kinderkrankheiten überstanden haben. Ein ``from __future__ import with_statement`` verwende ich also aus Prinzip nicht.
Future-Imports sind keine Beta-Features, sie sind einfach nur da um die Migration auf neuere Python-Version zu vereinfachen (siehe PEP 236 "Intent"). Es ist so weit ich weiß noch nie passiert dass das was per Future-Import eingeführt wurde, sich später ohne Feature-Import anders verhalten hat, als als es aus __future__ importiert wurde. In den nachfolgenden Python-Versionen ist der __future__-Import quasi implizit.

Verfasst: Samstag 26. April 2008, 14:32
von Y0Gi
EyDu hat geschrieben:Dann solltest du dir vielleicht 2.5 installieren ;-)
Du meinst 2.6. `with` ist erst ab 2.5 verfügbar und muss dort aus Kompatibilitätsgründen explizit importiert werden.

gerold: Wenn du deine Einstellung gegenüber `__future__` etwas zum Offeneren verschoben hast, wirst du vermutlich so wie ich empfinden, dass sich die zusätzliche Zeile lohnt, selbst wenn man `with` nur einmal im Code verwendet.

Und als Motivation: "Veränderung ist gut", "Wer nicht mit der Zeit geht, geht mit der Zeit", $random_spruch_aus_der_abteilung ;)

Verfasst: Samstag 26. April 2008, 17:25
von lunar
Y0Gi hat geschrieben:Und als Motivation: "Veränderung ist gut", "Wer nicht mit der Zeit geht, geht mit der Zeit", $random_spruch_aus_der_abteilung ;)
Naja, es schadet auch nicht, zumindest ein bisschen auf Rückwärtskompatibilität zu achten ;) Nicht alles, was alt ist, ist schlecht, immerhin verwende ich auch ``find``, ``grep`` und ``bash``, bei denen ein Großteil des Codes älter ist als ich selbst ;)

Verfasst: Samstag 26. April 2008, 18:31
von Leonidas
lunar hat geschrieben:Nicht alles, was alt ist, ist schlecht, immerhin verwende ich auch ``find``, ``grep`` und ``bash``,
Ja, aber wenn man die heute schreiben würde, würde da wohl brauchbareres rauskommen. find mit seiner seltsamen Syntax, grep mit seinen eher schwachen Regulären Ausdrücken (kein non-greedy, nicht mal in egrep?). Bash ist im Vergleich dazu moderner, aber auch da gibt es bessere Shells, etwa die Z-Shell (ich bin allerdings auch Bash-User, teilweise einfach aus Faulheit). Nicht alles etablierte muss auch stabiler sein.

Gerade das With-Statement ist fein, weil man da nicht vergisst, die Ressourcen freizugeben, wenn man sie nicht mehr braucht. Stell dir vor, hier gebe es jemanden der zu Python 2.2 kompatibel sein will, das wäre auch alles andere als Spaß.

Verfasst: Samstag 26. April 2008, 18:42
von lunar
Leonidas hat geschrieben:
lunar hat geschrieben:Nicht alles, was alt ist, ist schlecht, immerhin verwende ich auch ``find``, ``grep`` und ``bash``,
Ja, aber wenn man die heute schreiben würde, würde da wohl brauchbareres rauskommen. find mit seiner seltsamen Syntax, grep mit seinen eher schwachen Regulären Ausdrücken (kein non-greedy, nicht mal in egrep?).
Also mein grep versteht per ``--perl-regexp`` auch Perl-artige reguläre Ausdrücke und die sollten non-greedy Matching eigentlich können (behaupte ich einfach mal, ohne das probiert zu haben ;) ).

Verfasst: Samstag 26. April 2008, 18:52
von BlackJack
Dann ist das aber eine Vergleichbare Situation zum Thema. POSIX `grep` kennt diesen Schalter nicht, der ist also so ähnlich wie der `__future__`-Import.

Verfasst: Samstag 26. April 2008, 19:00
von gerold
Kommt euch diese Diskussion nicht auch ein wenig kindisch vor? 8)

Verfasst: Samstag 26. April 2008, 19:01
von lunar
BlackJack hat geschrieben:Dann ist das aber eine Vergleichbare Situation zum Thema. POSIX `grep` kennt diesen Schalter nicht, der ist also so ähnlich wie der `__future__`-Import.
GNU grep ist aber auch schon ein paar Jahrzehnte alt...