Python 3.15: was neu ist und ob sich das Update lohnt
- Thema
- PythonUpdate
- Veröffentlicht
- Lesezeit
- 5 Min.
- Getestet mit
- Python 3.15.0 (macOS)
Python 3.15 ist am 9. Oktober 2026 erschienen. Für Einsteiger ist die größte Neuerung, dass Fehlermeldungen jetzt oft gleich die Lösung vorschlagen. Dazu kommen frozendict, ein Dictionary, das sich nicht ändern lässt, und UTF-8 als Standard beim Öffnen von Dateien. Ich würde mich darüber informieren, aber nicht gleich auf den Zug aufspringen.
Was ist neu in Python 3.15?
Die vollständige Liste steht in den offiziellen Release-Notes zu Python 3.15 (öffnet in neuem Tab). Für den Anfang reichen diese Punkte:
- Fehlermeldungen schlagen bei vertippten oder falschen Methoden die richtige vor.
frozendictist ein neuer eingebauter Typ für Dictionarys, die gleich bleiben sollen.open()liest und schreibt ohne Angabe immer UTF-8, auf jedem System.
Der Rest ist eher etwas für später. Mit lazy import json lädt Python ein Modul erst, wenn du es zum ersten Mal benutzt, das verkürzt den Start großer Programme. sentinel ist ein Typ für eindeutige Platzhalterwerte. Der JIT-Compiler ist laut Ankündigung auf blog.python.org (öffnet in neuem Tab) deutlich schneller geworden, bleibt aber experimentell. Und es gibt mit Tachyon einen neuen Profiler.
Bessere Fehlermeldungen mit Vorschlägen
Rufst du eine Methode auf, die es in Python nicht gibt, hat Python bisher nur genau das gemeldet. Python 3.15 sagt in vielen Fällen dazu, was du wahrscheinlich gemeint hast:
zahlen = [1, 2, 3]
zahlen.push(4)AttributeError: 'list' object has no attribute 'push'. Did you mean '.append'?push kennen viele aus JavaScript, in Python heißt die Methode append. Unter Python 3.14 endet dieselbe Meldung nach 'push', ohne Vorschlag. Ich habe ein paar typische Fehler mit beiden Versionen ausprobiert:
| Code | Python 3.15 ergänzt |
|---|---|
zahlen.push(4) | Did you mean '.append'? |
name.toUpperCase() | Did you mean '.upper'? |
spieler.put("level", 3) | Use d[k] = v. |
(1, 2, 3).append(4) | Did you mean to use a 'list' object? |
Das finde ich die interessanteste Neuerung, gerade für Anfänger ist ein Vorschlag direkt im Terminal eine große Hilfe. Nicht jeder Fehler bekommt einen: Bei spieler.add("level", 3) auf einem Dictionary gibt es auch unter 3.15 keinen Vorschlag.
Mehr Beispiele stehen im Abschnitt Improved error messages (öffnet in neuem Tab) der Release-Notes.
frozendict: ein Dictionary, das sich nicht ändern lässt
Ein frozendict funktioniert beim Lesen wie ein normales Dictionary. Ändern kannst du es nach dem Anlegen nicht mehr. Das passt für Werte, die während des ganzen Programms gleich bleiben sollen, zum Beispiel die Einstellungen eines kleinen Spiels:
EINSTELLUNGEN = frozendict(breite=800, hoehe=600, fps=60)
print(EINSTELLUNGEN["fps"])
langsam = EINSTELLUNGEN | {"fps": 30}
print(langsam)
print(EINSTELLUNGEN)60
frozendict({'breite': 800, 'hoehe': 600, 'fps': 30})
frozendict({'breite': 800, 'hoehe': 600, 'fps': 60})Mit | bekommst du eine neue Kopie mit geändertem Wert, das Original bleibt, wie es war. Versuchst du dagegen, einen Wert direkt zu überschreiben, bricht Python ab:
EINSTELLUNGEN["fps"] = 30TypeError: 'frozendict' object does not support item assignmentBei einem normalen Dictionary würde diese Zeile einfach durchlaufen, und dein Spiel liefe ab da unbemerkt mit 30 statt 60 Bildern pro Sekunde. Mit frozendict fällt so ein Fehler sofort auf, genau an der Stelle, an der er passiert. Das meint der Satz „Errors should never pass silently“ aus dem Zen of Python.
UTF-8 als Standard beim Öffnen von Dateien
Wenn du eine Datei mit open("notizen.txt") öffnest und keine Kodierung angibst, nimmt Python 3.15 immer UTF-8. Vorher hing das vom System ab. Auf dem Mac und unter Linux war es meist schon UTF-8, unter Windows oft nicht, und dann kamen Umlaute aus Dateien kaputt an. Ich programmiere fast nur auf dem Mac und habe das unter Windows nicht getestet.
Wenn du die Kodierung selbst hinschreibst, verhält sich dein Code unter jeder Python-Version gleich:
with open("notizen.txt", encoding="utf-8") as datei:
text = datei.read()Wie du zum alten Verhalten zurückkommst, steht in den Release-Notes unter UTF-8 als Standard (öffnet in neuem Tab).
Läuft meine venv-Anleitung mit Python 3.15?
Ja. Ich habe die Schritte aus meinem Beitrag zur Python venv auf dem Mac mit 3.15 durchgespielt: venv anlegen, aktivieren, Paket mit pip installieren, requirements.txt schreiben. Alles läuft wie unter 3.14. Unter Windows habe ich es noch nicht getestet.
Aufgefallen ist mir dabei etwas bei der Installation über Homebrew:
brew install python@3.15
python3 --versionDanach meldete python3 sofort 3.15.0, nicht mehr 3.14. Wer also python3 -m venv .venv tippt, bekommt ab jetzt eine venv mit 3.15. Möchtest du die Version ausdrücklich festlegen, schreib sie in den Befehl:
python3.15 -m venv .venvBestehende venvs sind nicht betroffen. Eine venv merkt sich die Python-Version, mit der du sie angelegt hast. Meine bisherigen venvs laufen weiter mit 3.14.
Lohnt sich das Update auf Python 3.15?
Ich würde jedem raten, sich über die Neuerungen zu informieren, aber nicht gleich auf den Zug aufzuspringen. Vor allem größere Projekte würde ich nicht einfach umstellen, sondern vorher testen oder noch etwas Zeit vergehen lassen.
Wenn du auf dem Mac IDLE oder andere Programme mit tkinter nutzt: Unter macOS 27.0 können sie hängen, sobald ein Menübefehl einen Dialog öffnet. Das liegt laut Ankündigung an einer Änderung in macOS und betrifft alle aktuellen Python-Versionen, nicht nur 3.15. Ich nutze beides gerade nicht und konnte es deshalb nicht selbst prüfen.
Mehr zu Python findest du auf der Python-Themenseite.
Häufige Fragen
Wann ist Python 3.15 erschienen?
Python 3.15.0 ist am 9. Oktober 2026 erschienen. Du lädst es auf python.org (öffnet in neuem Tab) herunter, auf dem Mac geht es auch über Homebrew mit brew install python@3.15.
Sollte ich auf Python 3.15 updaten?
Informier dich über die Neuerungen, aber steig nicht sofort um. Vor allem größere Projekte würde ich nicht einfach umstellen, sondern vorher testen oder noch etwas Zeit vergehen lassen.
Funktioniert venv mit Python 3.15?
Ja. Auf dem Mac habe ich mit 3.15 eine venv angelegt, aktiviert, Pakete mit pip installiert und eine requirements.txt geschrieben. Alles läuft wie unter 3.14. Bestehende venvs bleiben bei der Python-Version, mit der du sie angelegt hast.
Hat dir der Beitrag geholfen?
Danke, das freut mich.
Danke für die ehrliche Antwort. Was hat gefehlt? Schreib es gern in die Kommentare.
Fehler gefunden oder eine Frage zum Code? Schreib einen Kommentar oder eine E-Mail.
Kommentare
Du brauchst kein Konto. Name und E-Mail sind freiwillig, die E-Mail-Adresse wird nicht angezeigt. Ich lese jeden Kommentar, bevor er erscheint. Mehr dazu im Datenschutz.