Question simple et courte. Echanger deux variables en Python est très facile : a, b = b, a
. C'est bon, je n'ai pas d'objection :) Mais je suis intéressé de savoir comment cela fonctionne en interne ? Est-ce qu'il crée une variable temporaire par lui-même ou est-ce que c'est quelque chose de plus intéressant (je le parie) ?
Réponse
Trop de publicités?Le code source Python est converti en bytecode avant qu'il ne soit exécuté. Vous pouvez voir comment le swap fonctionne en interne en utilisant le désassembleur dis
pour voir à quoi ressemble le bytecode :
import dis
>>> def f(a,b): a, b = b, a
>>> dis.dis(f)
1 0 LOAD_FAST 1 (b)
3 LOAD_FAST 0 (a)
6 ROT_TWO
7 STORE_FAST 0 (a)
10 STORE_FAST 1 (b)
13 LOAD_CONST 0 (None)
16 RETURN_VALUE
En termes simples, il pousse les valeurs de a et b sur la pile, fait pivoter (échanger) les deux premiers éléments, puis pousse à nouveau les valeurs.
Voir aussi :