Verfasst: Samstag 26. April 2008, 19:14
Wir können dir ja nicht alle an Weisheit ebenbürtig sein, dann wärst du ja nix besonderes mehrgerold hat geschrieben:Kommt euch diese Diskussion nicht auch ein wenig kindisch vor?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Wir können dir ja nicht alle an Weisheit ebenbürtig sein, dann wärst du ja nix besonderes mehrgerold hat geschrieben:Kommt euch diese Diskussion nicht auch ein wenig kindisch vor?
Hmm, habe jetzt auch nachgeschaut, das kannte ich noch nicht (lt. man page "this feature is highly experimental" - wird vermutlich auch in BSD grep nnicht drin sein), ich finds gut Und ja, die Analogie zum With-Statement besteht, nur ist das with_statement nicht expreimentell und somit gibt es noch weniger Gründe das nicht zu nutzen.lunar hat geschrieben: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 ).
Wenn sie geholfen hat, deine falsche Auffassung von Future-Imports zu korrigieren, war sie doch zu etwas nütze, oder?gerold hat geschrieben:Kommt euch diese Diskussion nicht auch ein wenig kindisch vor?
Es gibt aber auch programmierer, die sich weitern die zu nutzen und dann eben die Erfahrungen in Python 2.6 machen werden müssen. Oder es komplett ignorieren, denn dass ``with`` ein Keyword ist, werden die wenigsten merken.gerold hat geschrieben:Da jetzt das neue Statement von vielen Leuten verwendet wird, ist vielleicht noch etwas aufgefallen was man besser machen könnte -- zumindest im Hintergrund. Das muss aber nicht sein.
Wie auch immer. In der nächsten Version ist der Future-Import nicht mehr nötig. Die Programmierer hatten genug Zeit, alte Programme zu bereinigen und zu testen. Dem Einsatz des neuen Statements steht nichts mehr im Wege.
Nein. Um etwa Objekte, die ``close()`` implementieren sauber anzusprechen reicht ein einziger Aufruf von ``contextlib.closing()``.gerold hat geschrieben:Hinter "with" steht ja nicht nur dieses eine Wort. Dahinter steht die jetzt neu in Python eingebaute Möglichkeit, eigene Objekte so zu erweitern, dass diese auch mit "with" verwendet werden können. Und diese neuen Möglichkeiten enden erfahrungsgemäß in komplizierterem Python-Code.
Code: Alles auswählen
with open('/etc/passwd', 'r') as f:
for line in f:
print line
Code: Alles auswählen
f = open('/etc/passwd', 'r')
try:
for line in f:
print line
finally:
f.close()
Im Gegensatz zu Dekoratoren sind Context-Manager aber wesentlich einfacher zu schreiben, ich war da selbst erstaunt, dass das Interface so komfortabel war. Es sind im großen und ganzen ja nur Codeblöcke mit Pre- und Postconditions, so etwas kann man mit Funktionen und Dekoratoren nachbauen, wenn man masochistisch genug ist.gerold hat geschrieben:Python-Programme, die Dekoratoren definieren, sind ja auch komplizierter geworden. Nur fällt das denen, die so etwas fabrizieren, nicht mehr auf. Und so etwas gefällt nicht unbedingt jedem einfachen Praktiker oder Hobby-Programmierer. Erst recht nicht, wenn man das Gleiche erreicht, indem man ein wenig anders programmiert.
Hallo Leonidas!Leonidas hat geschrieben:Im Gegensatz zu Dekoratoren sind Context-Manager aber wesentlich einfacher zu schreiben, ich war da selbst erstaunt, dass das Interface so komfortabel war.
hätte es sicher auch keinen so langen Thread gegeben.weil ich keine Zeit dafür habe mich damit zu befassen und es in meinen Codebeispielen noch nicht verwende
Dass man es so auffassen könnte, stimmt auch wieder. Ich wollte in den vorherigen Beiträgen nur klar stellen, warum ich mir nicht jetzt schon die Zeit nehme, mich um "with" zu kümmern.birkenfeld hat geschrieben:Statt dessen hast du behauptet, Features aus Future-Imports wären in einer Art Beta-Phase und hätten potentiell Kinderkrankheiten.