News

Python 3.8 ist da – das ist neu

Python 3.8 ist da. (Grafik: Shutterstock)

Python, die fast 30-jährige Programmiersprache, die sich seit einiger Zeit wieder großer Beliebtheit erfreut, hat ihr im Vorfeld kontrovers diskutiertes Update erhalten – Version 3.8 kommt mit Assignment-Expressions und weiteren Neuerungen.

Python, die Programmiersprache der Data-Scientists, der Programmier-Newbies, der „Ich-will-nur-schnell-ein-Skript-schreiben“-Entwickler, der Machine-Learning-Experten und aller anderen, hat ihr lang antizipiertes Update auf Version 3.8 erhalten. Die größte Neuerung in Python 3.8 sind Assignment-Expressions. Schon im Vorfeld angekündigt und kontrovers diskutiert, führte die Entscheidung und die darauffolgende Debatte etwa dazu, dass der Begründer der Sprache, Guido van Rossum, im letzten Jahr von seiner Leitungsposition innerhalb der Python-Community zurücktrat. An die Stelle einer einzelnen vorstehenden Leitungsfigur trat ein durch die Core-Entwickler demokratisch bestimmter fünfköpfiger Lenkungsausschuss.

The Elephant – oder eher das Walross – in the Room: Assignment-Expressions

Für Assignment-Expressions wurde eine neue Schreibweise eingeführt: := . Das sieht aus wie ein auf der Seite liegendes Walross, also die Augen und Zähne – und wird deshalb auch Walrus-Operator genannt.

Assignment-Expressions erlauben es euch, einen Wert in derselben Expression zurückzugeben, in der ihr ihn zuweist.

Einer Variable einen Wert zuzuweisen und ihren Wert ausgeben ging vorher so:

>>> 
>>> walrus = False
>>> print(walrus)
False

In Version 3.8 könnt ihr das jetzt zu einem Statement kombinieren:

>>> 
>>> print(walrus := True)
True

Die Assignment-Expression erlaubt es euch, walrus den Wert True zuzuweisen und diesen Wert im gleichen Zug auszugeben. Disclaimer: Der Walrus-Operator tut nichts, was ihr nicht auch ohne tun könntet. Es ist einfach nur eine neue Art der Notation, durch die manche Programmstrukturen einfacher aufzuschreiben sind und euer Code besser lesbar wird. Ein Muster, an dem sich die Stärken des Walrus-Operators ganz gut aufzeigen lassen, sind while-Loops. Der folgende Code zum Beispiel fordert den User solange auf, eine Eingabe zu machen, bis er „quit“ schreibt.

inputs = list()
current = input("Write something: ")
while current != "quit":
inputs.append(current)
current = input("Write something: ")

Etwas eleganter könntet ihr das über einen Infinite-While-Loop, lösen, den ihr mithilfe des break-statements stoppt:

inputs = list()
while True:
current = input("Write something: ")
if current == "quit":
break inputs.append(current)

Wie ihr seht, macht dieser Code genau das Gleiche, jedoch ohne sich zu wiederholen.

Wenn ihr jetzt eine Assignment-Expression nutzt, sieht das Ganze so aus:

inputs = list()
while (current := input("Write something: ")) != "quit":
inputs.append(current)

Und wie ihr jetzt seht, ist das noch kürzer und einfacher. Der Test ist jetzt in einer Zeile mit dem while-statement, was erstmal logischer erscheint. In der einen Zeile passieren jetzt allerdings mehrere Dinge. Dadurch wird das Ganze eventuell für den einen oder die andere etwas komplexer zu lesen und zu verstehen. Ihr könnt euch im Einzelfall ja immer noch gegen die neue Schreibweise entscheiden.

Wer weiter in die Tiefe gehen will, findet in PEP 572 weitere Beispiele zur Verwendung des Walrus-Operators, außerdem Details und Gründe für die Einführung der neuen Notation.

Weitere Neuerungen

Die Assignment-Expressions sind natürlich nicht alles. In Python 3.8 könnt ihr erstmals Positional-only-Arguments definieren, neue Features für präzisere Typisierungen und f-Strings nutzen, die euch das Debuggen eures Codes vereinfachen sollen. Auch gibt es in Version 3.8 erstmals eine Warnung, sollte eure Syntax potentiell Gefahren bergen und die math– und statistics-Funktionen wurden ergänzt und verbessert. Außerdem neu ist etwa das importlib.metadata–Modul. Alle Details dazu und was es sonst noch neues gibt, könnt ihr in der gewohnt wunderbar ausführlichen Doku nachlesen.

Upgrade ja oder nein?

Wenn ihr neugierig auf die Neuerungen seid, werdet ihr um eine Installation des Updates nicht herumkommen. In pyenv oder Anaconda ist es aber glücklicherweise problemlos möglich, mehrere Versionen parallel zu installieren. Wenn ihr diese Tools nicht nutzt, Version 3.8 aber trotzdem einfach mal ausprobieren wollt: Der offizielle Python-3.8-Docker-Container ist für euch.

Ihr wollt nicht nur Ausprobieren, sondern fragt euch, ob ihr eure Projekte jetzt schon upgraden solltet?

Wer von 3.7 auf 3.8 upgradet, dürfte nur sehr wenige Probleme damit haben und kann sich jetzt schon über die Verbesserungen, die das neue Release mitbringt, freuen. Verschiedene Betas von 3.8 sind seit Monaten im Umlauf, die meisten Bugs sind dementsprechend wahrscheinlich gefixed. Unter Porting to Python 3.8 in der Doku findet ihr weitere Informationen und alle nötigen Details, die ihr beim Wechsel beachten müsst.

Wenn ihr lieber auf Nummer sicher gehen wollt: Es ist immer ratsam, den ersten Maintainance-Release abzuwarten. Sind mehrere Entwickler an eurem Code beteiligt – fragt sie vielleicht vorher. Sonst zwingt ihr sie gegebenenfalls ungewollt ebenfalls zu einem Upgrade. Die meisten Libraries werden ältere Versionen wohl noch für eine ganze Weile weiterhin unterstützen.

Zum Weiterlesen: 

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
user
user

Ääähhh….

while input(„Write Something“) != „quit“: pass

tada…

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung