Simple and short question. Swapping two variables in Python is very easy: a, b = b, a. That's ok, I have no objections :) But I'm interested how it works internally? Does it create some temporary variable by itself or it is something more interesting (I bet so)?
24
votes
1 Answers
39
votes
Python source code is converted to bytecode before it is executed. You can see how the swap works internally by using the disassembler dis to see what the bytecode looks like:
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
In simple terms, it pushes the values of a and b on the stack, rotates (swaps) the top two elements, then pops the values again.
See also: