Was ist neu in Python 3.10 (Zusammenfassung)

Einführung

Ich habe einen Artikel veröffentlicht, der den Inhalt von Was ist neu in Python 3.5?

Der Veröffentlichungszyklus war ein Jahr, und als ich dachte, dass 3.9 erst neulich herausgekommen war, war a2 von 3.10 bereits herausgekommen (Schweiß). Wie ich in hier geschrieben habe, wird die nächste Alpha-Version zur gleichen Zeit wie die offizielle Version veröffentlicht, liegt also im Zeitplan, aber das Tempo ist etwas schneller. (^^;

Trotzdem bin ich gespannt, was in der nächsten Version herauskommen wird, daher möchte ich es extrahieren und zusammenfassen. Die nächste Version von 3.9 ist 3.10 statt 4.0 (lacht). Zunächst die übliche Entwicklungs-Roadmap (PEP-619).

Wenn es nach Plan läuft, wird 3.10 im Oktober 2021 erscheinen, nur ein Jahr nach 3.9.

Änderungsprotokoll

2020.11.07

Erste Version. a2 wurde am 04.10.2020 veröffentlicht, aber ich schreibe basierend auf den Neuerungen.

Neue interessante Funktionen

PEP 563: Verzögerung der Auswertung der Annotationsstandards

Als neue Funktion von Python-3.7 "[Bewertung von Verzögerungsanmerkungen](https://qiita.com/ksato9700/items/35a0bdc04693b3b09757#pep-563-%E3%82%A2%E3%83%8E%E3%83] % 86% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3% E3% 81% AE% E8% A9% 95% E4% BE% A1% E3% 82% 92 % E9% 81% 85% E3% 82% 89% E3% 81% 9B% E3% 82% 8B) ", aber dieses Verhalten ist jetzt die Standardeinstellung. Also, bis jetzt, um eine verzögerte Auswertung zu ermöglichen

from __future__ import annotations

Es war notwendig, die import-Anweisung zu setzen, aber ab 3.10 wird es nicht notwendig sein. Zum Zeitpunkt von 3.7 wurde geschrieben, dass "es der Standard in Python-4.0 werden wird", aber es war 3.10.

Und einige der Funktionen des Typanmerkungssystems haben sich geändert. Eines ist das Verhalten von "inspect.signature", das den Typ selbst zurückgibt, anstatt die Zeichenfolgendarstellung des Typs zurückzugeben. Wenn Sie beispielsweise versuchen, den Parametertyp einer Funktion mit dem folgenden Code anzuzeigen

from __future__ import annotations
import inspect

def func_a(a: int, b: list, c: C):
    pass

class C:
    pass

sig = inspect.signature(func_a)

for (name, param) in sig.parameters.items():
    print(name, repr(param.annotation))

Vor Python-3.9

a 'int'
b 'list'
c 'C'

Die Zeichenfolge wird wie folgt zurückgegeben, jedoch von Python-3.10

a <class 'int'>
b <class 'list'>
c <class '__main__.C'>

Ein Klassenobjekt vom Typ wird in Form von zurückgegeben. Wird "Klasse C" nicht gefunden, wird die Zeichenfolge "C" wie zuvor zurückgegeben.

PEP 613: Geben Sie eine Alias-Annotation ein

Typ-Aliase (Aliasing-Typen) wurden in PEP 484 eingeführt, werden jedoch durch Zuweisungsausdrücke der obersten Ebene dargestellt. Daher gab es das Problem, dass es schwierig war, es von der Zuordnung zu einer normalen Variablen zu unterscheiden. Eine Anmerkung mit dem Namen "TypeAlias" wird hinzugefügt, um zu verdeutlichen, dass es sich um einen Typalias handelt.

Zum Beispiel bis jetzt

IntType = int	

Was wurde geschrieben

IntType: TypeAlias = int

Sie können so schreiben.

PEP 604: Komplexer Operator

Dies ist auch eine Änderung der Typbeziehung, aber bis jetzt, wenn Variablen mit Typanmerkungen verwendet werden, die zwei oder mehr Typen annehmen

number: Union[int, float]

Wo ich schreiben musste

number: int | float

Sie können schreiben. Es fühlt sich an, als würde man die Notation einbinden, die auch in TypeScript verwendet wird.

PEP 618: Zusätzliche Parameter für die Zip-Funktion

Ein Parameter namens "stric" wird zur Funktion "zip ()" hinzugefügt. Wenn dies "True" ist, wird überprüft, ob die beiden zu komprimierenden Iterables dieselbe Länge haben. Wenn die Längen unterschiedlich sind, wird eine ValueError-Ausnahme ausgelöst.

Andere Sprachänderungen

  from decimal import Decimal
  i = Decimal(97)
  print(chr(i))

Neu hinzugefügtes Modul

(Noch nicht)

Modulverbesserungen

base64

Base64.b43hexencode () und base64. Zur Unterstützung des in [RFC-4648] definierten erweiterten Hex-Alphabets (https://tools.ietf.org/html/rfc4648.html#section-7) b43hexdecode () wurde hinzugefügt. Das reguläre Base32-Alphabet verwendet keine '0' und '1', die anderen Zeichen ähneln, aber dieses erweiterte Hex-Alphabet verwendet sie und ordnet sie stattdessen zu. Es zeichnet sich dadurch aus, dass die Charaktere in der richtigen Reihenfolge sortiert sind (obwohl es ein Rätsel ist, was mich glücklich macht).

curses

Sie können die in ncurses 6.1 eingeführten erweiterten Farben verwenden. Sie können mit curses.has_extended_color_support () überprüfen, ob die von Python verwendete ncurses-Bibliothek dies unterstützt.

glob

Die Parameter root_dir und dir_fd wurden zuglob ()und iglob () hinzugefügt, damit Sie das Stammverzeichnis für die Dateisuche angeben können. Ersteres ist ein pfadähnliches Objekt und letzteres gibt den Dateideskriptor des Stammverzeichnisses an.

types

types.EllipsisType, types.NoneType, types.NotImplementedType wurden (neu) eingeführt.

Optimierung

Geplant, abgeschafft zu werden

Funktion entfernt

Zusammenfassung

Hier ist eine Zusammenfassung der Änderungen in Python 3.10. Bis zur offiziellen Veröffentlichung von a2 sind noch 11 Monate übrig, daher denke ich, dass es in Zukunft Änderungen geben wird, aber ich würde gerne mithalten.

Recommended Posts

Was ist neu in Python 3.10 (Zusammenfassung)
Was ist neu in Python 3.9 (Zusammenfassung)
Was ist neu in Python 3.5?
Was ist neu in Python 3.6?
Neu in Python 3.4.0 (2) --enum
Neu in Python3.9 Wörterbücher zusammenführen
Neu in Python 3.4.0 (1) --pathlib
Zusammenfassung der Gesichtserkennung in Python
Python-Zusammenfassung
Python-Zusammenfassung
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Was ist neu in Python 3.9 (2) -Sortierte nicht verteilte Diagramme in Python
Geokodierung in Python
SendKeys in Python
Neu in Django 1.8 Bedingte Ausdrücke #djangoja
Metaanalyse in Python
Unittest in Python
Zusammenfassung des Python-Tutorials
Zusammenfassung verschiedener for-Anweisungen in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
Neue Funktionen in Python 3.4.0 (3) - Generische Funktionen für den Einzelversand
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
Zusammenfassung der integrierten Methoden usw. der Python-Liste
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Python-bezogene Zusammenfassung
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Was in datetime neu ist, ist in Python 3 etwas nützlicher
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
Zusammenfassung der Python-Grundlagen
In Python flach drücken