Is there a standardized method to swap two variables in Python?
Python evaluates expressions from left to right. Notice that whileevaluating an assignment, the right-hand side is evaluated before theleft-hand side.
That means the following for the expression
a,b = b,a :
- The right-hand side
b,ais evaluated, that is to say, a tuple of two elements is created in the memory. The two elements are the objects designated by the identifiers
a, that were existing before the instruction is encountered during the execution of the program.
- Just after the creation of this tuple, no assignment of this tuple object has still been made, but it doesn't matter, Python internally knows where it is.
- Then, the left-hand side is evaluated, that is to say, the tuple is assigned to the left-hand side.
- As the left-hand side is composed of two identifiers, the tuple is unpacked in order that the first identifier
abe assigned to the first element of the tuple (which is the object that was formerly b before the swap because it had name
and the second identifier
bis assigned to the second element of the tuple (which is the object that was formerly a before the swap because its identifiers was
This mechanism has effectively swapped the objects assigned to the identifiers
So, to answer your question: YES, it's the standard way to swap two identifiers on two objects.
By the way, the objects are not variables, they are objects.