Inhaltsverzeichnis
Es befindet sich derzeit in der Beta-Phase (3.9.0b3) und in Zukunft werden wir eine vollständige Version von Python 3.9 sehen. Einige der neuen Funktionen sind einfach unglaublich cool und es wird großartig sein, sie in einer vollständigen Version zu sehen.
Folgende Punkte werden wir behandeln:
- Verkettungsoperator für Wörterbücher
- Tippen
- Zwei neue String-Methoden
- Neuer Parser
Schauen wir uns diese Innovationen an und wie sie angewendet werden können.
Wörterbücher kombinieren
Eine meiner Lieblingsfunktionen mit guter Syntax. Wenn wir zum Beispiel zwei Wörterbücher a und b haben, die kombiniert werden müssen, können wir jetzt einen speziellen Operator verwenden.
a = {1: 'a', 2: 'b', 3: 'c'} b = {4: 'd', 5: 'e'} c = a | b print(c) # {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
Sowie der Aktualisierungsoperator |= zum Aktualisieren eines vorhandenen Wörterbuchs:
a = {1: 'a', 2: 'b', 3: 'c'} b = {4: 'd', 5: 'e'} a |= b print(a) # {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
Wenn zwei verschiedene Wörterbücher denselben Schlüssel haben, verwenden Sie | :
a = {1: 'a', 2: 'b', 3: 'c', 6: 'одинаковые ключи'} b = {4: 'd', 5: 'e', 6: 'но разные значения'} print(a | b) # {1: 'a', 2: 'b', 3: 'c', 6: 'но разные значения', 4: 'd', 5: 'e'}
Aktualisieren von Wörterbüchern mit Generatoren
Eine weitere interessante Sache am Operator |= ist die Möglichkeit, Wörterbücher mit Generatoren zu aktualisieren, die ein Schlüssel-Wert- Paar haben:
a = {'a': 'one', 'b': 'two'} b = ((i, i**2) for i in range(3)) a |= b print(a) # {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}
Beim Versuch, eine solche Aktion mit der | Wir erhalten einen TypeError, da der Operator nur die Vereinigung mit dict -Objekten zulässt
Tippen
Python ist eine dynamisch typisierte Sprache, was bedeutet, dass wir den Typ einer Variablen nicht angeben müssen. Dieses Verhalten ist normal, obwohl es manchmal verwirrend sein kann. Und dann wird Pythons Flexibilität plötzlich zu nichts weiter als einer Unannehmlichkeit.
Seit Version 3.5 können wir Typen für Variablen angeben, aber dieser Ansatz war etwas umständlich. Das Update ändert alles, sehen Sie sich das Beispiel an:
Keine Eingabe (links) mit 3.9 Eingabe (rechts)
In der Funktion add_int wollen wir explizit Zahlen addieren (aus irgendeinem kryptischen und unerklärlichen Grund). Aber unser Redakteur weiß das nicht, und es ist ganz normal, zwei Zeilen mit dem + -Operator hinzuzufügen - daher sehen wir keine Kommentare vom Interpreter.
Jetzt können wir den int -Typ angeben, den wir in der Eingabe der Funktion erwarten möchten. Und jetzt meldet der Interpreter den Fehler sofort.
Wir können auch verschachtelte Typen angeben, zum Beispiel:
Tippen lässt sich überall anwenden – und das alles dank der neuen Syntax sieht es jetzt viel schöner aus.
Zwei neue String-Methoden
Nicht so wichtig wie die anderen oben genannten Neuerungen, aber dennoch in bestimmten Situationen nützlich. Zwei neue String-Methoden zum Entfernen von Präfix und Suffix:
"Hello world".removeprefix("He") # "llo world" "Hello world".removesuffix("ld") # "Hello wor"
Neuer Parser
Obwohl diese Änderung nicht übersehen werden kann, könnte sie später eine der bedeutendsten zukünftigen Entwicklungen von Python werden.
Python verwendet derzeit hauptsächlich den LL(1)-Parser, der Code von oben nach unten und von links nach rechts liest.
Im Moment verstehe ich nicht wirklich, wie das funktioniert - aber ich kann Ihnen eine Liste mit einigen Problemen mit dieser Methode geben:
Python enthält nicht nur den LL(1)-Parser, aus diesem Grund arbeiten einige Parser unter Umgehung des bestehenden Systems, was zu gewissen Schwierigkeiten führt.
LL(1) erzeugt eine Beschränkung der Python-Syntax (ohne Möglichkeit, sie zu umgehen). Dieses Problem hebt hervor, dass der folgende Code nicht ausgeführt werden kann
aktueller Parser (ausgelöst durch SyntaxError):
with (open("a_really_long_foo") as foo, open("a_really_long_bar") as bar): pass
- LL(1) unterbricht den linken rekursiven Parser. So kann eine bestimmte rekursive Syntax eine Endlosschleife mit einer Baumstruktur provozieren. Guido van Rossum, Schöpfer von Python, erklärt es hier
All diese Faktoren (wie auch andere, die ich einfach nicht beschreiben kann) haben einen zukunftsweisenden Einfluss auf Python; sie stoppen die Entwicklung der Sprache.
Ein neuer Parser, der auf der PEG -Technologie basiert, gibt Entwicklern mehr Flexibilität beim Schreiben von Code – etwas, das wir ab Version 3.10 bemerken werden.
Fazit
Das ist alles, was wir von der neuen Version 3.9 erwarten können. Wenn Sie es kaum erwarten können, die neue Beta-Version - 3.9.0b3 - auszuprobieren, können Sie sie hier installieren.