Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    juin 2016
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 920
    Points : 25 542
    Points
    25 542
    Par défaut Python 3.8 est publiée avec la prise en charge des expressions d’affectation
    Python 3.8.0 est publiée avec la prise en charge des expressions d’affectation
    et les paramètres de position uniquement

    L’équipe de développement de Python a publié la version 3.8.0 du langage de programmation ce lundi. Après une version bêta publiée cet été, l’équipe a annoncé hier la disponibilité de la version stable de Python 3.8.0 avec de nouvelles fonctionnalités. Python 3.8.0 prend en charge les expressions d’affection, les paramètres de position uniquement, une API C pour l’initialisation de Python qui offre un meilleur contrôle de l’ensemble de la configuration et un meilleur rapport d’erreurs. Python 3.8.0 apporte également plusieurs améliorations au langage.

    La version stable de Python 3.8.0 est finalement prête et vous pouvez maintenant commencer à essayer les dernières nouveautés du langage et par la même occasion bénéficier des dernières améliorations. Voici listées ci-dessous quelques-unes des fonctionnalités qu’apporte la version stable de Python 3.8.0 :

    Les expressions d’affectation (l’opérateur de morse « := »)

    Cet opérateur a été introduit depuis la première version bêta. Introduit par le PEP 572, il s’agit d’une fonctionnalité qui permet d'affecter des variables dans une expression en utilisant la notation « NAME := expr ». La nouvelle syntaxe « := » est dénommé « opérateur de morse ». Elle assigne des valeurs aux variables dans le cadre d'une expression plus large. Cela permet de rendre le code plus compact et d’éviter des calculs répétés. De plus, une nouvelle exception, TargetScopeError, a été ajoutée et un changement a été apporté à l'ordre d'évaluation.

    En juillet, l’équipe de développement de Python 3.8.0 a indiqué que l'utilisation de « := » dans une instruction « if » ou « while » permet d'affecter une valeur à une variable tout en la testant. Il est destiné à simplifier des choses comme les correspondances de modèles multiples. Ces utilisations, ainsi que d’autres (par exemple, dans la compréhension de listes et de dictées) aident à clarifier l’intention du programmeur. C'est une fonctionnalité que beaucoup d'autres langages ont, mais selon l’équipe, Python est bien sûr passé à côté de cela depuis près de 30 ans à ce stade.

    Nom : 1*2xSFXnhQJRPGt4t8Oca0zg.png
Affichages : 23094
Taille : 33,0 Ko

    « En fin de compte, il s’agit en fait d’un changement assez modeste pour tout le tumulte qu’il a causé », ont-ils expliqué. De plus, l’équipe considère l’opérateur de morse comme la principale fonctionnalité de cette version 3.8.0 de Python. Elle rappelle cependant que l’opérateur de morse a également été la fonctionnalité la plus controversée pendant la phase de développement.

    Les paramètres de position uniquement

    Le PEP 570 a introduit une nouvelle syntaxe, « / », dans Python 3.8.0b1 pour spécifier des paramètres de position uniquement dans les définitions de fonction Python. Les paramètres de position n'ont pas un nom utilisable en externe. Lorsqu'une fonction acceptant des paramètres uniquement positionnels est appelée, les arguments positionnels sont mappés sur ces paramètres uniquement en fonction de leur ordre. Une fonction peut n'accepter que les arguments *args et **kwargs, puis appliquer la condition selon laquelle kwargs est vide, mais cela masque ce que la fonction tente de faire.

    Même si la proposition définit une nouvelle syntaxe, les paramètres de position uniquement existent déjà dans les fonctions intégrées dans CPython, comme dans pow(x, y [, z]). La syntaxe proposée dans le PEP 570 étend la précédente et est donc totalement compatible avec les versions antérieures. Les paramètres purement déterminés par la position peuvent être au début d'une liste de paramètres et suivie d'un « / » pour le marquage. Ensuite, vous pouvez d’abord suivre les paramètres spécifiques à la position ou aux mots clés, et après la division * à la fin, les paramètres spécifiques aux mots clés.

    Les paramètres de position uniquement permettent de définir des scénarios où, par exemple, une fonction accepte n'importe quel argument de mot clé, mais peut également accepter une ou plusieurs positions. C'est souvent le cas avec les fonctions intégrées de Python. Par conséquent, le fait de permettre aux développeurs Python de le faire eux-mêmes renforce la cohérence du langage. Le « / » indique la fin des paramètres de position uniquement dans une liste d'arguments. L'idée est comparable à l'opérateur « * » pouvant être utilisé dans une liste d'arguments pour délimiter des arguments contenant uniquement des mots clés.

    Les hooks d’audit d’exécution

    Le PEP 578 a ajouté un crochet d'audit (Audit Hook) et un crochet ouvert vérifié (Verified Open Hook). Les deux sont disponibles à partir du code natif, ce qui permet aux applications et frameworks écrits en code Python pur de bénéficier de notifications supplémentaires, tout en permettant également aux administrateurs intégrés ou aux administrateurs système de déployer des versions de Python où l'audit est toujours activé. D’après l’explication donnée dans la documentation de cette version, seul CPython est tenu de fournir les API natives telles que décrites ici.

    Les autres implémentations doivent fournir les API Python pures et peuvent fournir des versions natives en fonction des exécutions sous-jacentes. Les événements d'audit sont également considérés comme spécifiques à l'implémentation, mais sont liés par des garanties de compatibilité des fonctionnalités normales.

    L’API C d’initialisation de Python

    Cette fonctionnalité a été publiée pour la première fois dans Python 3.8.0b par le PEP 587. En effet, ce PEP a apporté une nouvelle API C pour configurer l’initialisation Python, offrant ainsi un contrôle plus précis de l’ensemble de la configuration et un meilleur rapport d’erreurs. Il devient possible de lire la configuration, puis de remplacer certains paramètres calculés avant son application. Il devient également possible de remplacer complètement la façon dont Python calcule les chemins de recherche du module (sys.path).

    La nouvelle configuration isolée fournit des valeurs par défaut saines pour isoler Python du système, par exemple, incorporer Python dans une application. L'utilisation de l'environnement constitue désormais une option d'adhésion plutôt qu'une option de désinscription. Cela signifie que les variables d'environnement, les arguments de ligne de commande et les variables de configuration globale sont ignorés par défaut. Ce PEP a ajouté également les champs tels que « _PyRuntimeState.preconfig » et « PyInterpreterState.config » à ces structures internes. « PyInterpreterState.config » devient la nouvelle configuration de référence, remplaçant les variables de configuration globales et d'autres variables privées.

    Vectorcall : un protocole d'appel rapide pour CPython

    Le PEP 590 ajoute au langage Python une nouvelle API C qui permet d’optimiser les appels d’objets. Il introduit un nouveau protocole « vectorcall » et une convention d'appel. Ceci est basé sur la convention « fastcall », qui est déjà utilisée en interne par CPython. Les nouvelles fonctionnalités peuvent être utilisées par n'importe quelle classe d'extension définie par l'utilisateur. La plupart des nouvelles API sont privées dans CPython 3.8.0. Le plan est de finaliser la sémantique et de la rendre publique dans Python 3.9.0.

    Protocole Pickle 5 avec tampons de données hors bande

    Lorsque pickle est utilisé pour transférer des données volumineuses entre des processus Python afin de tirer parti d'un traitement multicoeurs ou multimachines, il est important d'optimiser le transfert en réduisant les copies mémoire, et éventuellement en appliquant des techniques personnalisées telles que la compression en fonction des données. pickle 5 prend en charge les tampons hors bande où les données compatibles PEP 3118 peuvent être transmises séparément du flux de pickle principal, à la discrétion de la couche de communication.

    Cache de système de fichiers parallèle pour les fichiers bytecode compilés

    Python 3.8.0 prend en charge désormais un nouveau paramètre, PYTHONPYCACHEPREFIX (également disponible sous -X pycache_prefix), qui configure le cache de bytecode implicite pour utiliser une arborescence de système de fichiers parallèle séparée, plutôt que les sous-répertoires __pycache__ par défaut dans chaque répertoire source. L'emplacement du cache est indiqué dans sys.pycache_prefix.

    Il y a aussi de nombreuses autres fonctionnalités et améliorations à noter dans cette version 3.8.0 de Python. Le projet de document « Quoi de neuf dans Python 3.8.0 ? », fourni sous forme de documentation, contient beaucoup plus d'informations sur ces modifications et bien d'autres encore. Il contient l’ensemble des nouvelles fonctionnalités et des améliorations contenues dans la version stable de Python 3.8.0.

    Source : Note de publication Python 3.8.0

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    Python 3.8.0 : un aperçu des fonctionnalités attendues pour la version stable du langage de programmation prévue pour octobre prochain

    Python 3.8.0 : la première version bêta est publiée avec une API C pour améliorer la configuration de l'initialisation

    Une première version alpha de Python 3.8 est publiée. Voici un tour d'horizon des nouveautés de cette version
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 992
    Points : 4 250
    Points
    4 250
    Par défaut
    Personnellement, à part les paramètres uniquement positionnels et les expressions d’affectation, les ajouts qui m'intéressent le plus en Python 3.8 sont les améliorations du typage statique, notamment :
    • typing.Protocol (PEP 544) pour faire du sous-typage structurel,
    • typing.final et typing.Final (PEP 591) pour les classes non dérivables, les méthodes non surchargeables et les variables qu'on ne peut plus réaffecter et
    • typing.Literal (PEP 586) pour définir une forme simplifiée de type dépendant (dependent type).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    mars 2010
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 310
    Points : 353
    Points
    353
    Par défaut
    Autant passer à un langage statique! Aucun n'interet que de vouloir tout typer si en plus python ne s'en sert même pas pour accélerer le code! En plus il faudra maintenir cette documentation.

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 2 886
    Points : 8 411
    Points
    8 411
    Par défaut
    En juillet, l’équipe de développement de Python 3.8.0 a indiqué que l'utilisation de « := » dans une instruction « if » ou « while » permet d'affecter une valeur à une variable tout en la testant.
    Je n'ai jamais rencontré ce genre de chose.
    A quoi cela sert-il ? J'ai un peu de mal à le rédiger et comprendre l'intérêt.

    J'imagine ceci qui n'a aucun intérêt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI( (maVar = 30) == VRAI)
    A moins que ce ne soit un if qui affecte 30 si la variable ne le vaut pas, et ne fait que le test si elle le vaut bien, dans l'optique de gagner du temps d'exécution ?
    Auquel cas quel est l'intérêt du if...

    Quelqu'un pour m'éclairer ?

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #5
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 485
    Points : 24 504
    Points
    24 504
    Par défaut
    Salut,

    Citation Envoyé par transgohan Voir le message
    Je n'ai jamais rencontré ce genre de chose.
    A quoi cela sert-il ? J'ai un peu de mal à le rédiger et comprendre l'intérêt.
    Dans Python, les nouvelles fonctionnalités font l'objet de discussions sur l'intérêt de la chose et d'une synthèse qui prend la forme d'un PEP (Python Enhancement Proposal) où sont repris des exemples qui en montrent avantages/inconvénients: ici, il s'agit du PEP 572.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2019
    Messages : 9
    Points : 33
    Points
    33
    Par défaut
    Je n'ai jamais rencontré ce genre de chose.
    A quoi cela sert-il ? J'ai un peu de mal à le rédiger et comprendre l'intérêt.
    Par exemple au lieu de stocker le retour d'une fonction puis tester avec un if ou une boucle tu directement appeler cette fonction et affecter le retour à une variable dans la condition du if ou while.

  7. #7
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 2 886
    Points : 8 411
    Points
    8 411
    Par défaut
    Merci wiztricks.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    match = pattern.search(data)
    if match is not None :
        # Do something with match
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (match := pattern.search(data)) is not None:
        # Do something with match
    Ok...
    On dit souvent que les informaticiens sont des fainéants mais là on atteint un certain niveau.

    Bon après en en lisant d'autres il y a quelques intérêts.
    Mais j'ai jamais été trop fan des écritures python raccourcies à l'extrême car cela devient vite compliqué à comprendre lors de la lecture.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  8. #8
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    mars 2012
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mars 2012
    Messages : 1 931
    Points : 3 151
    Points
    3 151
    Par défaut
    à force de tout simplifier, le python va redevenir du perl (( YES ))
    Si la réponse vous a aidé, pensez à cliquer sur +1

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/11/2019, 18h42
  2. Réponses: 0
    Dernier message: 16/09/2019, 20h05
  3. Réponses: 1
    Dernier message: 17/08/2019, 17h14
  4. Python 3.8.0 : la première version bêta est publiée avec une API C
    Par Bill Fassinou dans le forum Général Python
    Réponses: 0
    Dernier message: 05/06/2019, 22h17
  5. Réponses: 1
    Dernier message: 13/03/2019, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo