Nouveautés de Python 3.10 (Résumé)

introduction

J'ai publié un article résumant le contenu des nouveautés de Python 3.5.

Le cycle de sortie a duré un an, et quand j'ai pensé que 3.9 venait de sortir l'autre jour, a2 de 3.10 était déjà sorti (transpiration). Comme je l'ai écrit dans ici, la prochaine version alpha sortira en même temps que la version officielle, donc c'est comme prévu, mais le rythme est un peu plus rapide. (^^;

Néanmoins, je suis curieux de savoir ce qui sortira dans la prochaine version, alors j'aimerais l'extraire et le résumer. La prochaine version de 3.9 est 3.10 au lieu de 4.0 (rires). Tout d'abord, la feuille de route de développement habituelle (PEP-619).

Si cela se passe comme prévu, 3.10 sortira en octobre 2021, juste un an après 3.9.

Journal des modifications

2020.11.07

Première version. a2 est sorti le 2020-10-04, mais j'écris en fonction des nouveautés.

Nouvelles fonctionnalités intéressantes

PEP 563: Retarder l'évaluation des valeurs par défaut des annotations

En tant que nouvelle fonctionnalité de Python-3.7, "[Retarder l'évaluation des annotations](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) ", mais ce comportement est désormais le comportement par défaut. Donc, jusqu'à présent, pour permettre une évaluation différée

from __future__ import annotations

Il était nécessaire de mettre la déclaration d'importation, mais à partir de 3.10, ce ne sera pas nécessaire. Au moment de la version 3.7, il était écrit que "cela deviendra le standard de Python-4.0", mais c'était la version 3.10.

Et certaines des fonctions du système d'annotation de type ont changé. L'un est le comportement de inspect.signature, qui renvoie le type lui-même au lieu de renvoyer la représentation sous forme de chaîne du type. Par exemple, si vous essayez d'afficher le type de paramètre d'une fonction avec le code suivant

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))

Avant Python-3.9

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

Une chaîne de caractères est renvoyée comme, mais à partir de python-3.10

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

Un objet de classe de type sera retourné sous la forme de. Si la classe C n'est pas trouvée, la chaîne'C' sera renvoyée comme avant.

PEP 613: annotation d'alias de type

Les alias de type (types d'alias) ont été introduits dans PEP 484, mais sont représentés par des expressions d'affectation de premier niveau. Par conséquent, le problème était qu'il était difficile de la distinguer de l'affectation à une variable normale. Une annotation appelée «TypeAlias» est ajoutée pour indiquer clairement qu'il s'agit d'un alias de type.

Par exemple, jusqu'à présent

IntType = int	

Ce qui a été écrit

IntType: TypeAlias = int

Vous pourrez écrire comme ça.

PEP 604: opérateur complexe

Il s'agit également d'un changement de relation de type, mais jusqu'à présent, lors de l'annotation de type de variables qui prennent deux types ou plus

number: Union[int, float]

Où je devais écrire

number: int | float

Vous pourrez écrire. On a l'impression d'incorporer la notation qui est également utilisée dans TypeScript.

PEP 618: Paramètres supplémentaires pour la fonction zip

Un paramètre appelé «stric» est ajouté à la fonction «zip ()», et quand c'est «True», il vérifie que les deux itérables à compresser sont de la même longueur. Si les longueurs sont différentes, une exception ValueError sera levée.

Autres changements de langue

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

Module nouvellement ajouté

(Pas encore)

Améliorations du module

base64

Base64.b43hexencode () et base64. Pour prendre en charge l'alphabet Hex étendu défini dans la [RFC-4648](https://tools.ietf.org/html/rfc4648.html#section-7) b43hexdecode () a été ajouté. L'alphabet Base32 standard n'utilise pas '0' et '1' qui ressemblent à d'autres caractères, mais cet alphabet hexadécimal étendu les utilise et les mappe à la place. Il se caractérise par le fait que les personnages sont triés dans l'ordre (bien que ce soit un mystère ce qui me rend heureux).

curses

Vous pourrez utiliser les couleurs étendues introduites dans ncurses 6.1. Vous pouvez vérifier si la bibliothèque ncurses utilisée depuis Python prend en charge cela avec curses.has_extended_color_support ().

glob

Les paramètres root_dir et dir_fd ont été ajoutés àglob ()etiglob ()pour vous permettre de spécifier le répertoire racine des recherches de fichiers. Le premier est un objet de type chemin et le second spécifie le descripteur de fichier du répertoire racine.

types

types.EllipsisType, types.NoneType, types.NotImplementedType ont été (ré) introduits.

optimisation

Prévu pour être aboli

Fonction supprimée

Sommaire

Voici un résumé des modifications apportées à Python 3.10. Il reste encore 11 mois avant la sortie officielle de a2, donc je pense qu'il y aura des changements dans le futur, mais j'aimerais rester au courant.

Recommended Posts

Nouveautés de Python 3.10 (Résumé)
Nouveautés de Python 3.9 (Résumé)
Quoi de neuf dans Python 3.5
Quoi de neuf dans Python 3.6
Nouveau dans Python 3.4.0 (2) --enum
Nouveau dans les dictionnaires de fusion python3.9
Nouveau dans Python 3.4.0 (1) --pathlib
Résumé de la détection de visage en Python
Résumé Python
Résumé Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Nouveautés de Python 3.9 (2) - Tri des graphes non circulés dirigés en Python
Géocodage en python
SendKeys en Python
Nouveau dans Django 1.8 Expressions conditionnelles #djangoja
Méta-analyse en Python
Unittest en Python
Résumé du didacticiel Python
Résumé de diverses instructions for en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
Nouvelles fonctionnalités de Python 3.4.0 (3) - Fonctions génériques à distribution unique
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Résumé des méthodes intégrées, etc. de la liste Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
résumé relatif à python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quoi de neuf dans datetime qui est un peu plus utile dans Python 3
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Résumé des bases de Python
Aplatir en python