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

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 21:42:30262parcourir

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

Expressions d'affectation en Python : l'opérateur « morse » (=:)

Introduites dans Python 3.8, les expressions d'affectation utilisant l'opérateur « morse » (:=) fournissent une amélioration significative du langage, permettant des affectations au sein des compréhensions et des lambdas.

Syntaxe et sémantique

Une expression d'affectation est une expression nommée de la forme nom := expr, où nom est un identifiant et expr est toute expression valide. L'expression est évaluée à la valeur de expr, tout en attribuant simultanément cette valeur à name.

Raison d'être de l'introduction

La principale motivation pour l'ajout d'expressions d'affectation était de :

  • Autoriser les affectations dans des contextes où les affectations traditionnelles étaient interdites, telles que les compréhensions de listes et les lambdas.
  • Améliorez le débogage interactif en facilitant l'affectation facile des valeurs.

Exemples d'utilisation

a) Obtention de valeurs conditionnelles

Au lieu de :

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

Les expressions d'affectation permettent :

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

b) Simplifier les compréhensions de listes

Exemple :

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

Peut être simplifié en :

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

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

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

  • Ils sont évalués de droite à gauche.
  • Ils ont une priorité différente de celle des virgules.
  • Ils ne prennent pas en charge plusieurs cibles, les affectations à des noms non uniques ou l'emballage/déballage itérable.
  • Les annotations de type en ligne et les affectations augmentées ne sont pas non plus prises en charge.

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