Maison  >  Article  >  développement back-end  >  Que sont les expressions d'affectation et comment fonctionnent-elles dans Python 3.8 ?

Que sont les expressions d'affectation et comment fonctionnent-elles dans Python 3.8 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 13:05:02125parcourir

What are Assignment Expressions and How Do They Work in Python 3.8?

Expressions d'affectation avec l'opérateur "Walrus" : une fonctionnalité Python 3.8

Python 3.8 a introduit un nouveau concept connu sous le nom d'"expressions d'affectation" utilisant l'opérateur ":=" , communément appelé l'opérateur « morse ».

Syntaxe, sémantique et grammaire

Une expression d'affectation prend la forme nom := expr, où expr est une expression Python valide et le nom est un identifiant. La sémantique est que la valeur de l'expression est attribuée au nom, et la valeur de l'expression d'affectation est également la même que celle de l'expression.

Rationale

La motivation principale car l'introduction d'expressions d'affectation consistait à activer les affectations dans des constructions telles que les compréhensions de liste et les fonctions lambda qui les interdisaient auparavant. Il facilite également le débogage interactif sans avoir besoin de refactoriser le code.

Cas d'utilisation

a) Obtention de valeurs conditionnelles :

  • Avant :

    <code class="python">command = input("> ")
    while command != "quit":
        print("You entered:", command)
        command = input("> ")</code>
  • Après :

    <code class="python">while (command := input("> ")) != "quit":
        print("You entered:", command)</code>

b) Simplification des compréhensions de listes  :

  • Avant :

    <code class="python">[(lambda y: [y, x/y])(x+1) for x in range(5)]</code>
  • Après :

    <code class="python">[[y := x+1, x/y] for x in range(5)]</code>

Différences par rapport aux affectations régulières

Les expressions d'affectation diffèrent des affectations régulières de plusieurs manières :

  • Ce sont des expressions plutôt que des instructions.
  • Elles ont une priorité de droite à gauche .
  • Ils diffèrent en termes de priorité autour des virgules.
  • Ils ne prennent pas en charge les cibles multiples, les affectations à des noms non uniques, l'emballage/déballage itérable, les annotations de type en ligne ou les affectations augmentées.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn