Selten wurde das neue Release einer Programmiersprache so kontrovers diskutiert wie bei Python 3000 (auch „Py3K“ genannt). Und das hat seinen Grund, schließlich ist die neue Version in einigen häufig genutzten Bestandteilen inkompatibel zu den Vorgängern. Die Wandlung der „print“-Anweisung hin zur Funktion ist wohl das berühmteste Beispiel, aber darüber hinaus gibt es weitere wichtige Änderungen, u.a.:
- viele Methoden und Funktionen liefern statt Listen nun Iteratoren oder „Views“ zurück (z.B. map, filter, dict.keys)
- syntaktische Änderungen, z.B. beim Exception Handling („as“ statt Komma)
- Unicode ist nun der Standard zur Zeichenkodierung (siehe das „Unicode-Howto“)
- Divisionen liefern nun Fließkommazahlen, keine abgeschnittenen Integers
- „old-style-classes“, also Klassen, die nicht von einer Basisklasse abgeleitet wurden, sind nicht mehr erlaubt
- einige Funktionen und Methoden wurden umbenannt („raw_input“ wurde zu „input“) oder komplett entfernt („has_key“, „file“)
- neue nützliche Helfer wie die „with“-Anweisung oder das „multiprocessing“-Paket sind hinzugekommen
Eine komplette Liste der Änderungen findet man unter: http://docs.python.org/dev/3.0/whatsnew/3.0.html. Zusätzlich sollte man beachten, dass die kürzlich erschienene Version 2.6 bereits einige Backports von Python 3000 beinhaltete, sofern diese kompatibel mit Python 2.x waren. Die (entsprechend langen) Release Notes zu Python 2.6 findet man unter: http://docs.python.org/dev/whatsnew/2.6.html
Wer seine bestehenden Skripte auf Kompatibilität zu Python 3000 prüfen möchte, kann dies unter Python 2.6 mit dem Kommandozeilenparameter „-3“ tun. Wer seine Skripte automatisch in Python 3000 portieren möchte, kann hierfür das Tool „2to3“ verwenden. Häufig ist manuelles Nacharbeiten aber dennoch erforderlich.