Простой и короткий вопрос. Переключение двух переменных в Python очень просто: a, b = b, a
. Это нормально, у меня нет возражений:) Но мне интересно, как это работает внутри страны? Создает ли она некоторую временную переменную самостоятельно или это что-то более интересное (держу пари)?
Как переменная swapping работает внутри?
Ответ 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 в стеке, вращает (свопирует) верхние два элемента, а затем снова выдает значения.
См. также: