Anzeige
Anzeige
News

Python 3.8 ist da – das ist neu

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.

3 Min.
Artikel merken
Anzeige
Anzeige

Python 3.8 ist da. (Grafik: Shutterstock)

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

Anzeige
Anzeige

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.

Anzeige
Anzeige

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

Anzeige
Anzeige
>>> 
>>> 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.

Anzeige
Anzeige
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:

Anzeige
Anzeige
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.

Anzeige
Anzeige

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.

Anzeige
Anzeige

Zum Weiterlesen: 

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Ein Kommentar
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

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!
Hallo und herzlich willkommen bei t3n!

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

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

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige