Was ist neu in Python 3.5?

Einführung

Laut der Entwicklungs-Roadmap (PEP-478) soll Python 3.5 am 13. September (wahrscheinlich US-Zeit) offiziell veröffentlicht werden. .. Ein zusätzlicher Release-Kandidat (rc4) wurde möglicherweise am 9. September veröffentlicht (https://www.python.org/downloads/release/python-350rc4/), was möglicherweise etwas spät ist, aber wahrscheinlich Es wird innerhalb einer Woche herauskommen. Also habe ich eine japanische Zusammenfassung der Änderungen in Python 3.5 + einen Kommentar gemacht. Die ursprüngliche Geschichte ist "Zusammenfassung - Release-Highlights" am Anfang von hier.

Laden Sie zum Testen von Python3.5 die neuesten Release-Kandidaten von [hier] herunter (https://www.python.org/downloads/release/python-350rc4/). Oder wenn Sie pyenv verwenden, können Sie es einfach mit pyenv install installieren, aber die neueste Version von pyenv v20150901 unterstützt nur bis zu rc2, sodass Sie sich damit abfinden oder pyenv von HEAD abrufen müssen. Wenn Sie Homebrew verwenden, sieht es so aus.

brew uninstall pyenv #Wenn bereits installiert
brew install pyenv --HEAD
pyenv install 3.5.0rc4
Nachtrag vom 14.09.2015

Wie geplant wurde 3.5.0 veröffentlicht. Um ehrlich zu sein, ich hatte nicht erwartet, so bald zu kommen.

pyenv wurde ebenfalls sofort auf 20150913 aktualisiert, wobei 3.5.0 offiziell unterstützt wurde. Es ist bereits auf Homebrew. Jeder arbeitet schnell! Wenn Sie es also ausprobieren möchten, ist dies in Ordnung.

brew install pyenv #Oder wenn Sie es installiert haben, brauen Sie ein Upgrade
pyenv install 3.5.0

Highlights der Python 3.5-Version

Neue Syntaxfunktionen

Matrixmultiplikationsoperator

PEP-465 Vorgeschlagene Spezifikation hinzugefügt, damit die Matrixmultiplikation in der Form "a @ b" geschrieben werden kann .. Das Seltsame ist, dass die Standardbibliothek keine Implementierung bereitstellt, die sie verwendet, sondern nur die Spezifikationen. Stattdessen haben einige externe Bibliotheken wie numpy Unterstützung angekündigt.

Corroutine mit Async und warten

In PEP-492 vorgeschlagene Spezifikationen für die Definition und Verwendung von Korroutinen wurden hinzugefügt. Bisher war es möglich, mit Generator eine Cor-Routine zu erstellen. Um das Verständnis zu erleichtern, wurden die Schlüsselwörter async und await eingeführt und die Spezifikationen erweitert.

Weitere Verallgemeinerung des Auspackens

Eine Erweiterung der Werterweiterung mit "" und "**", wie in [PEP-448] vorgeschlagen (https://www.python.org/dev/peps/pep-0448/). Es kann mehrfach als Funktionsargument wie "print ( [1], * [2], 3)" oder in Tapples, Listen und Wörterbüchern wie "[* range (4), 4]" verwendet werden. Wird sein.

Neue Bibliotheksmodule

zipapp

Python kann komprimierten Python-Code ausführen. Außerdem seit v2.6! Es ist eine Verschwendung, eine spezielle Funktion zu haben, die nicht verwendet wird, ohne dass es jemand weiß (ich wusste es nicht einmal!). Ein Vorschlag zur Vereinfachung der Verwendung ist daher [PEP-441](https: //www.python). Das Tool, das in org / dev / peps / pep-0441 /) erstellt wurde, ist zipapp. Der mit Zip konsolidierte Python-Code heißt "Python Zip Application", und die Funktionen zum Erstellen werden bereitgestellt.

Neue integrierte Funktionen

Formatierung um% in Bytes und Bytearray

Bisher könnte ich so etwas wie "% 04x"% 10 "machen, aber das Ergebnis ist str-Typ. Eine Erweiterung, die es erlaubt, ein Bytetyp in Form von "b"% 04x "% 10" zu sein.

Hex-Methodenunterstützung für Bytes, Bytearray, Memoryview

Sie können Dinge wie "b" \ xf0 \ x9f \ x90 \ x8d'.hex () "ausführen.

Tupelindizierung in der Speicheransicht

Es scheint, dass Sie mit Tupel indizieren können, um auf die Elemente eines mehrdimensionalen Arrays (Matrix) zuzugreifen.

Das Attribut gi_yieldfrom des Generators wurde hinzugefügt

Ich habe die Notwendigkeit dafür nicht wirklich verstanden ...

Neue Ausnahme RecursionError

Ein Typ von RuntimeError, der auftritt, wenn die maximale Anzahl von Rekursiven überschritten wird.

Neue Ausnahme StopAsyncIteration

Ausnahme am Ende einer Wiederholung mit asynchronem Iterable, erstellt von async for.

CPython-Implementierung

Fehlerbehandlungsroutine für sys.stdin / sys.stdout geändert

Wenn LC_TYPE das POSIX-Gebietsschema (C-Gebietsschema) ist, verwenden sys.stdin und sys.stdout jetzt Ersatz-Escape-Fehlerbehandlungsroutinen anstelle strenger Fehlerbehandlungsroutinen.

Abschaffung von .pyo

Wenn Sie Python mit der Option -O oder -OO ausführen, wurden die optimierten Byte-Kompilierungsergebnisse in .pyo-Dateien anstelle von .pyc gespeichert. Ab Python 3.5 wird es abgeschafft und in einer .pyc-Datei gespeichert. Die Optimierungsstufe wird im Dateinamen (z. B. xxx.cpython-35.opt-1.pyc) ([PEP-488]) beschrieben. (https://www.python.org/dev/peps/pep-0488/))

Mehrphaseninitialisierung der Erweiterung

Bisher wurden integrierte Module und Erweiterungen sofort generiert und initialisiert. Dies wird dahingehend geändert, dass die Generierung zuerst für alle Module generiert und dann der Initialisierungscode wie bei anderen Modulen ausgeführt wird. (PEP-489)

Deutlich verbessertes Bibliotheksmodul

C Implementierung von OrderedDict

Sammlungen.OrderedDict wurde in C 4- bis 100-mal schneller neu implementiert!

Verbesserung von tmpfile

Der Bytetyp kann auch mit Argumenten verwendet werden, die nur mit dem Typ str übergeben werden konnten (Präfixspezifikation usw.). Sie können auch Keine angeben.

Verbesserung des SSL-Moduls

Speicher-BIO-Unterstützung hinzugefügt. Durch diese Änderung kann die SSL-Protokollverarbeitung von der eigentlichen Socket-E / A-Verarbeitung getrennt werden.

Verbessertes Traceback-Modul

Leichtere TracebackException-, StackSummary- und FrameSummary-Klassen hinzugefügt

Verbesserung von lru_cache

Functools.lru_cache wurde als Dekorator bereitgestellt, um die Ergebnisse von Funktionsaufrufen zwischenzuspeichern, wurde jedoch in C neu implementiert.

Verbesserte Sicherheit

SSLv3 abgeschafft

Es kann mit ssl.SSLContext verfügbar gemacht werden, wurde jedoch vollständig aus der Standardbibliothek entfernt. Diese Änderung wurde auch auf Version 3.4 und Version 2.7 zurückportiert. Dies wäre eine Problemumgehung für das Problem der SSLv3-Sicherheitsanfälligkeit, das als [POODLE Attack] bezeichnet wird (https://en.wikipedia.org/wiki/Transport_Layer_Security#POODLE.E6.94.BB.E6.92.83). ..

Verbesserte Cookie-Verarbeitung

Strikte Analyse von Cookies, um Injektionsangriffe zu verhindern.

Verbesserungen unter Windows

Einführung eines neuen Installationsprogramms als Ersatz für MSI

Es stehen zwei Typen zur Verfügung: ein Web-Installationsprogramm, das die erforderlichen Dateien zum Zeitpunkt der Installation von einem kleinen Installationsprogramm herunterlädt, und ein Offline-Installationsprogramm, das alle Standardkomponenten enthält. Es gibt 32-Bit-Version und 64-Bit-Version.

Verwenden von MSVC ++ 14.0

Python 3.5 für Windows wurde mit MSVC ++ 14.0 erstellt und die Erweiterung muss auch damit kompiliert werden.

Schließlich

Zusätzlich zu den oben vorgestellten hat Was ist neu in Python 3.5 verschiedene Änderungen vorgenommen. Wenn es etwas gibt, das interessant oder brauchbar aussieht, würde ich es gerne aufgreifen.

Recommended Posts

Was ist neu in Python 3.5?
Was ist neu in Python 3.6?
Was ist neu in Python 3.10 (Zusammenfassung)
Neu in Python 3.4.0 (2) --enum
Was ist neu in Python 3.9 (Zusammenfassung)
Neu in Python3.9 Wörterbücher zusammenführen
Neu in Python 3.4.0 (1) --pathlib
Quadtree in Python --2
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Zwietracht in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Neu in Django 1.8 Bedingte Ausdrücke #djangoja
Neue Funktionen in Python 3.4.0 (3) - Generische Funktionen für den Einzelversand
Was in datetime neu ist, ist in Python 3 etwas nützlicher
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python