Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼nach vorne
2019-08-19 17:58:523506Durchsuche

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Python 3.8 ist die neueste Version der Python-Sprache, die für verschiedene Aufgaben wie Skripterstellung, Automatisierung sowie maschinelles Lernen und Webentwicklung geeignet ist. Nachdem Python 3.8 nun in die offizielle Beta-Phase eingetreten ist, bringt diese Version viele Syntaxänderungen, Speicherfreigabe, effizientere Serialisierung und Deserialisierung, verbesserte Wörterbücher und weitere neue Funktionen.

Python 3.8 führt außerdem viele Leistungsverbesserungen ein. Insgesamt stehen wir vor einem schnelleren, präziseren, konsistenteren und moderneren Python. Nachfolgend finden Sie die neuen Funktionen und wichtigsten Änderungen in Python 3.8.

1. Zuweisungsausdruck

Die offensichtlichste Änderung in Python 3.8 ist der Zuweisungsausdruck, also der :=-Operator. Zuweisungsausdrücke können einer Variablen einen Wert zuweisen, auch wenn die Variable nicht existiert. Es kann in Ausdrücken verwendet werden, ohne als separate Anweisung zu erscheinen.

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Wenn im obigen Beispiel die Variable line nicht existiert, wird sie erstellt und ihr dann der Rückgabewert von file.readline() zugewiesen. Überprüfen Sie dann, ob die Zeile „Ende“ ist. Wenn nicht, lesen Sie die nächste Zeile, speichern Sie sie in der Zeile und fahren Sie mit dem Testen fort.

Zuweisungsausdrücke folgen der Python-Tradition der Einfachheit, genau wie Listenverständnisse. Sein Zweck besteht darin, langweiligen Standardcode in einem bestimmten Python-Programmiermodell zu vermeiden. Für den obigen Code müssen beispielsweise zwei weitere Codezeilen auf normale Weise geschrieben werden.

Verwandte Empfehlungen: „Python-Video-Tutorial

2. Parameter werden nur nach Position angegeben

Nur ​​positionell Bei angegebenen Argumenten handelt es sich um eine neue Syntax in Funktionsdefinitionen, mit der Programmierer erzwingen können, dass ein Parameter nur positionell angegeben wird. Dies beseitigt die Unklarheit in Python-Funktionsdefinitionen darüber, welche Parameter Positionsparameter und welche Parameter Schlüsselwortparameter sind.

Nur-Positionsargumente können in Situationen verwendet werden, in denen eine Funktion beliebige Schlüsselwortargumente akzeptiert, aber auch ein oder mehrere unbekannte Argumente akzeptieren kann. Dies ist häufig bei den integrierten Funktionen von Python der Fall. Daher wird die Konsistenz der Python-Sprache dadurch verbessert, dass Programmierer dies tun können.

Das in der Python-Dokumentation angegebene Beispiel lautet wie folgt:

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Das Symbol / trennt Positionsparameter und Schlüsselwortparameter. In diesem Beispiel sind alle Parameter unbekannte Parameter. In früheren Versionen von Python galt z als Schlüsselwortargument. Unter Verwendung der obigen Funktionsdefinition sind pow(2, 10) und pow(2, 10, 5) beide korrekte Aufrufmethoden, pow(2, 10, z=5) ist jedoch falsch.

3. Unterstützt das F-String-Debugging

Das F-String-Format erleichtert die Berechnung von Ausgabetext und -werten oder -variablen innerhalb desselben Ausdrucks und ist effizienter .

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Ausgabe 4.

Ohne das Hinzufügen von = am Ende des f-String-Ausdrucks kann der Wert des f-Ausdrucks selbst ausgegeben werden, gefolgt vom berechneten Wert

Erfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8

Der Die Ausgabe ist x+ 1=4.

4. Multiprozess-Gemeinschaftsspeicher

In Python 3.8 stellt das Multiprocessing-Modul die SharedMemory-Klasse bereit, die gemeinsam genutzte Speicherbereiche zwischen verschiedenen Python-Prozessen erstellen kann.

In älteren Versionen von Python konnten zwischen Prozessen geteilte Daten nur in eine Datei geschrieben, über einen Netzwerk-Socket gesendet oder mit dem Pickle-Modul von Python serialisiert werden. Shared Memory bietet eine schnellere Möglichkeit, Daten zwischen Prozessen zu übertragen, wodurch die Multiprozessor- und Multicore-Programmierung in Python effizienter wird.

Ein gemeinsam genutztes Speichersegment kann als einfacher Bytebereich oder als nicht veränderbares listenartiges Objekt zugewiesen werden, das numerische Typen, Zeichenfolgen, Byteobjekte, Keine-Objekte usw. speichern kann. Eine kleine Menge von Python-Objekten.

5. Verbesserungen im Typisierungsmodul

Python ist eine dynamisch typisierte Sprache, aber über das Typisierungsmodul können Typhinweise hinzugefügt werden, um die Überprüfung durch Tools von Drittanbietern zu ermöglichen Python-Code. Python 3.8 fügt der Typisierung einige neue Elemente hinzu, damit robustere Prüfungen unterstützt werden können:

Der endgültige Modifikator und die endgültige Typanmerkung geben an, dass das geänderte oder mit Anmerkungen versehene Objekt zu keinem Zeitpunkt überschrieben, vererbt und nicht überschrieben werden kann neu zugewiesen werden.

Der Literal-Typ beschränkt einen Ausdruck auf einen bestimmten Wert oder eine Liste von Werten (nicht unbedingt Werte desselben Typs).

TypedDict kann zum Erstellen von Wörterbüchern verwendet werden, deren Werte für bestimmte Schlüssel auf einen oder mehrere Typen beschränkt sind. Beachten Sie, dass diese Einschränkungen nur zur Bestimmung der Rechtmäßigkeit von Werten zur Kompilierungszeit dienen und zur Laufzeit nicht eingeschränkt werden können.

Neue Version des Pickle-Protokolls

Das Pickle-Modul von Python bietet eine Methode zum Serialisieren und Deserialisieren von Python-Datenstrukturen oder -Instanzen, und das Wörterbuch kann zum späteren Lesen intakt gespeichert werden. Verschiedene Versionen von Python unterstützen unterschiedliche Pickle-Protokolle, und die neueste Version unterstützt eine umfassendere, leistungsfähigere und effizientere Serialisierung.

Die fünfte Version des in Python 3.8 eingeführten Pickle-Protokolls kann eine neue Methode zum Pickle-Objekte verwenden, die das Pufferprotokoll von Python unterstützen kann, z. B. Bytes, Speicheransichten oder Numpy-Arrays usw. Das neue Pickle vermeidet viele Speicherkopiervorgänge beim Pickle dieser Objekte.

Externe Bibliotheken wie NumPy und Apache Arrow unterstützen das neue Pickle-Protokoll in ihren jeweiligen Python-Bindungen. Das neue Pickle ist auch als Plugin für Python 3.6 und 3.7 verfügbar, das über PyPI installiert werden kann.

7. Reversibles Wörterbuch

Das Wörterbuch wurde in Python 3.6 unter Verwendung einer neuen Implementierung des PyPy-Projekts neu geschrieben. Wörterbücher sind jetzt nicht nur schneller und kompakter, sondern erben auch die Reihenfolge ihrer Elemente – Elemente werden in der Reihenfolge angeordnet, in der sie hinzugefügt wurden, genau wie eine Liste. Python 3.8 ermöglicht auch reversed() für Wörterbücher.

8. Leistungsverbesserungen

Die Geschwindigkeit vieler integrierter Methoden und Funktionen wurde um 20 % ~ 50 % erhöht, da viele Funktionen zuvor unnötige Parameterkonvertierungen erforderten .

Ein neuer Opcode-Cache verbessert die Geschwindigkeit spezifischer Anweisungen im Interpreter. Die einzige derzeit erzielte Geschwindigkeitsverbesserung ist jedoch der LOAD_GLOBAL-Opcode, der 40 % schneller ist. Ähnliche Optimierungen werden in zukünftigen Versionen vorgenommen.

Dateikopiervorgänge wie „shutil.copyfile()“ und „shutil.copytree()“ verwenden jetzt plattformspezifische Aufrufe und andere Optimierungen, um die Betriebsgeschwindigkeit zu verbessern.

Neu erstellte Listen sind jetzt im Durchschnitt 12 % kleiner als zuvor, dank Optimierungen, die der Listenkonstruktor durchführt, wenn die Listenlänge im Voraus bekannt ist.

Schreibvorgänge in Klassenvariablen neuer Klassentypen (z. B. Klasse A(Objekt)) sind in Python 3.8 schneller. Auch die Geschwindigkeit von „operator.itemgetter()“ und „collections.namedtuple()“ wurde optimiert.

9. Python-C-API und CPython-Implementierung

Neueste Versionen von Python im Hinblick auf die Umgestaltung der in CPython verwendeten C-API (eine in C geschriebene Referenzimplementierung von Python). ) Es wurde viel Mühe investiert. Bisher wird diese Arbeit noch hinzugefügt, und die vorhandenen Ergebnisse umfassen:

Python-Initialisierungskonfiguration (Python-Initialisierungskonfiguration) Es gibt eine neue C-API, die eine strengere Kontrolle über Python-Initialisierungsroutinen und detaillierteres Feedback erreichen kann. Dies erleichtert die Einbettung der Python-Laufzeitumgebung in andere Anwendungen und die programmgesteuerte Übergabe von Startparametern an Python-Programme. Die neue API stellt außerdem sicher, dass alle Python-Konfigurationssteuerelemente einen einzigen, konsistenten Speicherort haben, sodass zukünftige Änderungen (z. B. der neue UTF-8-Modus von Python) einfacher sind.

CPythons andere neue C-API – das „vectorcall“-Aufrufprotokoll – ermöglicht schnellere Aufrufe der internen Methoden von Python, ohne temporäre Objekte zu erstellen. Die API ist immer noch instabil, hat sich aber deutlich verbessert. Die API soll in Python 3.9 ausgereift sein.

Der Python-Runtime-Audit-Hook stellt zwei APIs für die Python-Laufzeit bereit, die zum Hooken von Ereignissen verwendet werden können, um sicherzustellen, dass externe Tools wie Test-Frameworks, Protokolle und Audit-Systeme sie überwachen können.

10. So laden Sie Python 3.8 herunter

Laden Sie die Betaversion von Python 3.8 von der Python Software Foundation herunter: https://www.python.org/downloads/release /python -380b1/

Das obige ist der detaillierte Inhalt vonErfahren Sie in einem Artikel mehr über die neuen Funktionen von Python 3.8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jianshu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen