Maison  >  Article  >  développement back-end  >  Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼avant
2019-08-19 17:58:523482parcourir

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Python 3.8 est la dernière version du langage Python, qui convient à diverses tâches telles que les scripts, l'automatisation, l'apprentissage automatique et le développement Web. Maintenant que Python 3.8 est entré dans la phase bêta officielle, cette version apporte de nombreux changements de syntaxe, un partage de mémoire, une sérialisation et une désérialisation plus efficaces, des dictionnaires améliorés et davantage de nouvelles fonctionnalités.

Python 3.8 introduit également de nombreuses améliorations de performances. Dans l’ensemble, nous sommes sur le point de disposer d’un Python plus rapide, plus précis, plus cohérent et plus moderne. Vous trouverez ci-dessous les nouvelles fonctionnalités et les modifications les plus importantes de Python 3.8.

1. Expression d'affectation

Le changement le plus évident dans Python 3.8 est l'expression d'affectation, c'est-à-dire l'opérateur :=. Les expressions d'affectation peuvent attribuer une valeur à une variable même si la variable n'existe pas. Il peut être utilisé dans des expressions sans apparaître comme une instruction distincte.

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Dans l'exemple ci-dessus, si la ligne de variable n'existe pas, elle sera créée, puis la valeur de retour de file.readline() lui sera attribuée. Vérifiez ensuite si la ligne est "fin". Sinon, lisez la ligne suivante, enregistrez-la en ligne et poursuivez le test.

Les expressions d'affectation suivent la tradition de simplicité de Python, tout comme les compréhensions de listes. Son objectif est d'éviter certains codes passe-partout ennuyeux dans un modèle de programmation Python spécifique. Par exemple, le code ci-dessus nécessite que deux lignes de code supplémentaires soient écrites de manière normale.

Recommandations associées : "Tutoriel vidéo Python"

2 Paramètres spécifiés uniquement par position

Uniquement par position. Les arguments spécifiés sont une nouvelle syntaxe dans les définitions de fonctions qui permettent aux programmeurs de forcer la spécification d'un paramètre uniquement en fonction de sa position. Cela résout l'ambiguïté dans les définitions de fonctions Python concernant les paramètres qui sont des paramètres de position et ceux qui sont des paramètres de mots-clés.

Les arguments de position uniquement peuvent être utilisés dans des situations où une fonction accepte des arguments de mots clés arbitraires, mais peut également accepter un ou plusieurs arguments inconnus. C'est souvent le cas avec les fonctions intégrées de Python, donc permettre aux programmeurs de le faire améliore la cohérence du langage Python.

L'exemple donné dans la documentation Python est le suivant :

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Le symbole / sépare les paramètres de position et les paramètres de mots-clés. Dans cet exemple, tous les paramètres sont des paramètres inconnus. Dans les versions précédentes de Python, z était considéré comme un argument de mot-clé. Mais en utilisant la définition de fonction ci-dessus, pow(2, 10) et pow(2, 10, 5) sont tous deux des méthodes d'appel correctes, mais pow(2, 10, z=5) est incorrect.

3. Prise en charge du débogage de chaîne f

Le format de chaîne f facilite le calcul du texte de sortie et des valeurs ou variables dans la même expression, et est plus efficace. .

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Sortie 4.

Sans ajouter = à la fin de l'expression de chaîne f, la valeur de l'expression f elle-même peut être sortie, suivie de la valeur calculée

Découvrez les nouvelles fonctionnalités de Python 3.8 dans un seul article

Le la sortie est x+ 1=4.

4. Mémoire partagée multi-processus

Dans Python 3.8, le module multitraitement fournit la classe SharedMemory, qui peut créer des zones de mémoire partagée entre différents processus Python.

Dans les anciennes versions de Python, les données partagées entre les processus ne pouvaient être écrites que dans un fichier, envoyées via une socket réseau ou sérialisées à l'aide du module pickle de Python. La mémoire partagée offre un moyen plus rapide de transférer des données entre les processus, rendant ainsi la programmation multiprocesseur et multicœur en Python plus efficace.

Un segment de mémoire partagée peut être alloué comme une simple zone d'octets ou comme un objet de type liste non modifiable, qui peut stocker des types numériques, des chaînes, des objets octets, des objets Aucun, etc. Une petite collection d'objets Python .

5. Améliorations du module de saisie

Python est un langage typé dynamiquement, mais des astuces de saisie peuvent être ajoutées via le module de saisie pour permettre à des outils tiers de vérifier Code Python. Python 3.8 ajoute de nouveaux éléments au typage afin qu'il puisse prendre en charge des vérifications plus robustes :

Le modificateur final et l'annotation de type Final indiquent que l'objet modifié ou annoté ne doit à aucun moment être remplacé, héritage et ne peut pas être réaffecté.

Le type Littéral limite une expression à une valeur ou une liste de valeurs spécifique (pas nécessairement des valeurs du même type).

TypedDict peut être utilisé pour créer des dictionnaires dont les valeurs de clés spécifiques sont limitées à un ou plusieurs types. Notez que ces restrictions ne sont utilisées que pour déterminer la légalité des valeurs au moment de la compilation et ne peuvent pas être restreintes au moment de l'exécution.

6. Nouvelle version du protocole pickle

Le module pickle de Python fournit une méthode pour sérialiser et désérialiser les structures ou instances de données Python, et le dictionnaire peut être enregistré intact pour une lecture ultérieure. Différentes versions de Python prennent en charge différents protocoles pickle, et la dernière version prend en charge une sérialisation plus large, plus puissante et plus efficace.

La cinquième version du protocole pickle introduite dans Python 3.8 peut utiliser une nouvelle méthode pour pickle des objets, qui peut prendre en charge le protocole tampon de Python, comme les octets, les vues mémoire ou le tableau Numpy, etc. Le nouveau pickle évite de nombreuses opérations de copie de mémoire lors du pickle de ces objets.

Les bibliothèques externes telles que NumPy et Apache Arrow prennent en charge le nouveau protocole pickle dans leurs liaisons Python respectives. Le nouveau pickle est également disponible sous forme de plugin pour Python 3.6 et 3.7, qui peut être installé à partir de PyPI.

7. Dictionnaire réversible

Le dictionnaire a été réécrit en Python 3.6, en utilisant une nouvelle implémentation apportée par le projet PyPy. En plus d'être plus rapides et plus compacts, les dictionnaires héritent désormais de l'ordre de leurs éléments : les éléments sont disposés dans l'ordre dans lequel ils ont été ajoutés, tout comme une liste. Python 3.8 autorise également reverse() sur les dictionnaires.

8. Améliorations des performances

La vitesse de nombreuses méthodes et fonctions intégrées a été augmentée de 20 % à 50 %, car de nombreuses fonctions nécessitaient auparavant une conversion de paramètres inutile. .

Un nouveau cache d'opcodes améliore la vitesse des instructions spécifiques dans l'interpréteur. Cependant, la seule amélioration de vitesse actuellement réalisée est l'opcode LOAD_GLOBAL, qui est 40 % plus rapide. Des optimisations similaires seront apportées dans les versions futures.

Les opérations de copie de fichiers telles que Shutil.copyfile() et Shutil.copytree() utilisent désormais des appels spécifiques à la plate-forme et d'autres optimisations pour améliorer la vitesse de fonctionnement.

Les listes nouvellement créées sont désormais en moyenne 12 % plus petites qu'avant, grâce aux optimisations effectuées par le constructeur de liste si la longueur de la liste est connue à l'avance.

Les opérations d'écriture sur les variables de classe de nouveaux types de classes (comme la classe A(objet)) sont plus rapides dans Python 3.8. Operator.itemgetter() et collections.namedtuple() ont également été optimisés en vitesse.

9. Implémentation de l'API C Python et CPython

Versions récentes de Python en termes de refactoring de l'API C utilisée dans CPython (une implémentation de référence de Python écrite en C ) Beaucoup d’efforts ont été déployés. Jusqu'à présent, ce travail est toujours en cours d'ajout et les résultats existants incluent :

La configuration d'initialisation Python (Configuration d'initialisation Python) dispose d'une nouvelle API C qui permet un contrôle plus strict sur les routines d'initialisation Python et des commentaires plus détaillés. Cela facilite l'intégration du runtime Python dans d'autres applications et la transmission par programmation des paramètres de démarrage aux programmes Python. La nouvelle API garantit également que tous les contrôles de configuration Python ont un emplacement unique et cohérent, afin que les modifications futures (telles que le nouveau mode UTF-8 de Python) soient plus faciles.

L'autre nouvelle API C de CPython - le protocole d'appel "vectorcall" - permet des appels plus rapides aux méthodes internes de Python sans créer d'objets temporaires. L'API est encore instable, mais s'est considérablement améliorée. L'API devrait mûrir dans Python 3.9.

Le hook d'audit d'exécution Python fournit deux API pour l'exécution Python, qui peuvent être utilisées pour intercepter des événements afin de garantir que des outils externes tels que des frameworks de test, des journaux et des systèmes d'audit peuvent les surveiller.

10. Comment télécharger Python 3.8

Téléchargez la version bêta de Python 3.8 depuis la Python Software Foundation : https://www.python.org/downloads/release /python -380b1/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer