Seite 1 von 1

Änderungen an Sprachdef.

Verfasst: Freitag 26. August 2005, 06:27
von syntact
Inwieweit werden zukünftige Änderungen an Python kompatibel mit
momentan gültigen Python-Versionen sein ?
Ist es richtig, daß in "Python 3000" (Python 3.0) Sprachelemente wie
print und lambda verschwinden werden und sollte man daher schon jetzt
print und lambda vermeiden, um nicht Programme zu schreiben, die in
einigen Jahren ungültig sind ??

Verfasst: Freitag 26. August 2005, 07:23
von jens
Das hatten wird schon mal besprochen: http://www.python-forum.de/viewtopic.php?t=3455

re

Verfasst: Freitag 26. August 2005, 10:53
von syntactic
Danke für den Hinweis.
Also gut, Sprachänderungen scheinen unvermeidlich zu kommen, dann
bleibt noch meine Frage nach einer Empfehlung, ob man sich jetzt schon auf die wahrscheinlichen Änderungen z.B. in Python 3000 einstellen sollte und print oder lambda vermeiden sollte (sind die Änderungen, die bis jetzt im
Python 3000 - Paper skizziert sind, schon festgelegt oder ist da noch
Spielraum für weitere Änderungen oder Rücknahmen von skizzierten
Änderungen) ?

Verfasst: Freitag 26. August 2005, 10:59
von jens
Ich glaube nicht, das die änderungen festgelegt sind... Und ich kann mir auch nur schwer vorstellen, das man print abschaffen wird... Vielleicht wird man es auch einfach nur anders Implementieren?!?!

lambda und yield usw. benutze ich eigentlich sowieso nie... Weil ich gar nicht weiß, wie die genau funktionieren :oops: Somit hab ich das jetzt schon nicht vermisst ;)

Verfasst: Freitag 23. September 2005, 17:16
von Gast
Ich würde gern 2 Zahlentupel komponentenweise addieren, also als Vektoren behandeln. Gibt es irgeneine möglichkeit neue Operationen für sowas zu definieren bzw. vorhandene Operationen zu überladen um sie dann z.B. in der Python-Shell andwenden zu können?
danke

Verfasst: Freitag 23. September 2005, 19:29
von Leonidas
Solchen Möglichkeiten, vorhandene Typen zu ersetzen gibt es nicht, aber es ist kein Problem von den eingebauten Typen zu erben uns seine eigenen Typen zu definieren, seit Python 2.2.1. So kannst du class Vector(tuple) definieren und sie so erweitern.

Aber Python 3.0 bringt gar nichts so schlimmes mit sich, print wird geändert und lambda war sowieso nicht besonders mächtig. LCs haben lambdas größtenteils ersetzt.

Verfasst: Freitag 23. September 2005, 20:47
von mitsuhiko
Leonidas hat geschrieben:Solchen Möglichkeiten, vorhandene Typen zu ersetzen gibt es nicht, aber es ist kein Problem von den eingebauten Typen zu erben uns seine eigenen Typen zu definieren, seit Python 2.2.1. So kannst du class Vector(tuple) definieren und sie so erweitern.

Aber Python 3.0 bringt gar nichts so schlimmes mit sich, print wird geändert und lambda war sowieso nicht besonders mächtig. LCs haben lambdas größtenteils ersetzt.
Aber wo ist mein yield hin? :cry:

Verfasst: Freitag 23. September 2005, 23:32
von Leonidas
blackbird hat geschrieben:Aber wo ist mein yield hin? :cry:
Das bleibt doch da, ohne yield gibts keine Generatoren und die werden ganz sicher nicht abgeschafft.

Verfasst: Sonntag 25. September 2005, 16:25
von mitsuhiko
Leonidas hat geschrieben:
blackbird hat geschrieben:Aber wo ist mein yield hin? :cry:
Das bleibt doch da, ohne yield gibts keine Generatoren und die werden ganz sicher nicht abgeschafft.
Hab mir jetzt von Jens fehlleiten lassen. Aber lambda finde ich eigentlich schon sehr praktisch, auch wenn ich es kaum verwende.

Verfasst: Montag 26. September 2005, 12:59
von Leonidas
blackbird hat geschrieben:Aber lambda finde ich eigentlich schon sehr praktisch, auch wenn ich es kaum verwende.
Ich brauche lambda nicht, weil mir lambda nur anonyme Funktionen erlaubt, die ich, wenn ich will auch an Namen binden kann. Sowas brauche ich nie, vor allem weil diese Funktionen im Vergleich zu normalen Funktionen sehr verkrüppelt sind. map() und filter() sollen auch weg, bei denen man vorher eine Lambda-Expression als ersten Parameter angegeben hat. Aber man kann dort auch problemlos Callables angeben und sie funktionieren weiterhin.

Also wenn schon lambda, dann aber bitte richtig, mit allen Möglichkeiten. Ich habe nichts gegen Lambdas, die funktionalen Elemente von Python finde ich sehr nett (auch wenn ich sie nicht immer nutze), aber in anderen Sprachen ist lambda wirklich mächtiger.

Verfasst: Donnerstag 29. September 2005, 21:27
von BlackJack
Leonidas hat geschrieben:map() und filter() sollen auch weg, bei denen man vorher eine Lambda-Expression als ersten Parameter angegeben hat. Aber man kann dort auch problemlos Callables angeben und sie funktionieren weiterhin.
`map()` und `filter()` sollen als *eingebaute* Funktionen verschwinden -- die werden sicher als Funktionen in einem Modul wieder auftauchen. Ausserdem gibt's noch `imap()` und `ifilter()` im `itertools` Modul wo man anonyme Funktionen genauso gebrauchen kann, wie bei `map()` und `filter()`.