With-Statement

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
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 26. April 2008, 11:51

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Samstag 26. April 2008, 11:56

Dann solltest du dir vielleicht 2.5 installieren ;-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 26. April 2008, 12:17

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 26. April 2008, 12:42

gerold hat geschrieben:Ich empfehle *with* erst dann, wenn ich es nicht mehr mit
``from __future__ import with_statement`` importieren muss.
Warum?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 26. April 2008, 12:53

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 26. April 2008, 12:56

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 26. April 2008, 13:21

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 26. April 2008, 13:30

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Samstag 26. April 2008, 14:32

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 ;)
lunar

Samstag 26. April 2008, 17:25

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 ;)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 26. April 2008, 18:31

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ß.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Samstag 26. April 2008, 18:42

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 ;) ).
BlackJack

Samstag 26. April 2008, 18:52

Dann ist das aber eine Vergleichbare Situation zum Thema. POSIX `grep` kennt diesen Schalter nicht, der ist also so ähnlich wie der `__future__`-Import.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 26. April 2008, 19:00

Kommt euch diese Diskussion nicht auch ein wenig kindisch vor? 8)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

Samstag 26. April 2008, 19:01

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...
Antworten