Comment Python échange-t-il les valeurs de tuple sans variable temporaire ?

Patricia Arquette
Libérer: 2024-11-11 16:48:03
original
310 Les gens l'ont consulté

How Does Python Swap Tuple Values Without a Temporary Variable?

Comment fonctionne l'échange de tuples en interne : échange de variables sans temporaire

En Python, échanger les valeurs de deux variables implique souvent l'utilisation d'une variable temporaire . Cependant, l'opération d'échange peut être effectuée sans cela via des affectations de tuples.

a = 5
b = 6
(a, b) = (b, a)
Copier après la connexion

Python sépare l'opération d'affectation en deux étapes :

  1. Évaluation de l'expression de droite : les valeurs stockées dans b et a sont poussées sur la pile sous la forme [b, a].
  2. Attribution aux variables de gauche :

    • L'opcode ROT_TWO permute le haut deux éléments sur la pile, ce qui donne [a, b].
    • Les deux premières valeurs sont ensuite attribuées à a et b à l'aide de STORE_FAST. Le premier STORE_FAST attribue à a la valeur extraite de la pile, tandis que le second attribue à b la valeur restante.

Ce processus élimine le besoin d'une troisième variable temporaire.

Pour les devoirs comportant plus de deux éléments, le même principe s'applique. Pour les affectations à trois noms, ROT_THREE est utilisé pour inverser les trois premiers éléments de la pile. Pour les affectations plus longues, un tuple explicite est construit puis décompressé à l'aide de BUILD_TUPLE et UNPACK_SEQUENCE.

En résumé, les affectations de tuple permettent un échange efficace en manipulant directement les valeurs sur la pile sans la surcharge liée à la création et à l'utilisation d'une variable temporaire.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal