25 votes

Comment fonctionne la permutation des variables en interne ?

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) ?

39voto

Mark Byers Points 318575

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 :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X