Die erste Alpha-Version von Python 3.0, auch bekannt als Python 3000 (scherzhaft nach dem voraussichtlichen Erscheinungsjahr benannt), ist auf der Python-Website verfügbar. Sie ist vor allem für Programmierer gedacht, die einen ersten Eindruck von Python 3 haben möchten.
Im Lauf des Jahres wird es noch mehrere Alpha-Versionen geben, im 2008 dann Betas und die finale Version ist für August 2008, also in einem Jahr geplant. Bin gespannt was zuerst draussen ist, Python 3 oder Ruby 2 – am Ende noch Perl 6
.
Bei Python habe ich ein gutes Gefühl, der ganze Prozess wird in diversen PEPs (Python Enhancement Proposals) ziemlich transparent dokumentiert und auch die Mailing-Liste Python 3000 ist informativ.
Diese Präsentation von Guido zeigt die wichtigsten Änderungen im Vergleich mit Python 2. Hier meine Zusammenfassung, mit Links zu den PEPs:
- Viele Altlasten (z. B. klassische Klassen) entfernt und generell Codebasis verbessert
bytesundstranstattstrundunicode, also Strings sind standardmässig Unicode-Strings, zu/vonbytesmuss explizit konvertiert werden- Ein-/Ausgabe überarbeitet, verschachtelbare Streams wie in Java, aber grundlegende Dinge bleiben einfach
- Neue String-Formatierung,
"{0.name} ({0.alter})".format(person)anstatt"%s (%i)" % (person.name, person.alter) - Abstrakte Basisklassen (ABCs) für eingebaute und eigene Klassen; ähnlich wie Interfaces von Java, nur dass Methoden auch Implementierung haben können und dank Mehrfachvererbung von mehreren abgeleitet werden kann
- Optionale Annotationen für Funktionsparameter wie zum Beispiel
def haul(item: Haulable, *vargs: PackAnimal), die für Python selber keine Bedeutung haben, aber zum Beispiel für generische Funktionen verwendet werden können range(),zip(),map(),filter()geben Iteratoren zurückdict.keys()und ähnliche geben nicht mehr eine Liste zurück, sondern eine View (Sicht), was schneller ist
Ach ja, Python 3 wird keine geschweiften Klammern anstelle von Einrückung verwenden, hier Pythons Meinung dazu:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
. python -c 'import this' ist auch was lustiges zum ausprobieren.