Подтвердить что ты не робот

Как переменная swapping работает внутри?

Простой и короткий вопрос. Переключение двух переменных в Python очень просто: a, b = b, a. Это нормально, у меня нет возражений:) Но мне интересно, как это работает внутри страны? Создает ли она некоторую временную переменную самостоятельно или это что-то более интересное (держу пари)?

4b9b3361

Ответ 1

Исходный код Python преобразуется в bytecode перед его выполнением. Вы можете увидеть, как своп работает внутри, используя дизассемблер dis, чтобы посмотреть, как выглядит байт-код:

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 

Проще говоря, он подталкивает значения a и b в стеке, вращает (свопирует) верхние два элемента, а затем снова выдает значения.

См. также: