2.10. Reassignment¶
We use variables in a program to “remember” things, like the current score at the football game. But variables are variable. This means they can change over time, just like the scoreboard at a football game. You can assign a value to a variable, and later assign a different value to the same variable.
Note
This is different from math. In math, if you give x the value 3, it cannot change to refer to a different value half-way through your calculations!
It is legal to make more than one assignment to the same variable. A new assignment makes an existing variable refer to a new value (and stop referring to the old value).
bruce: int
bruce = 5
print(str(bruce))
bruce = 7
print(str(bruce))
(ch07_reassign1)
The first time bruce
is printed, its value is 5, and the second
time, its value is 7. The assignment statement changes the value (the
object) that bruce
refers to.
Here is what reassignment looks like in a reference diagram:

It is important to note that in mathematics, a statement of equality
is always true. If a is equal to b
now, then a will always
equal to b
. In Python, an assignment statement can make two
variables refer to the same object and therefore have the same value.
They appear to be equal. However, because of the possibility of
reassignment, they don’t have to stay that way:
a: int
b: int
a = 5
b = a # after executing this line, a and b are now equal
print(str(a) + str(b))
a = 3 # after executing this line, a and b are no longer equal
print(str(a) + str(b))
(ch07_reassign2)
Line 4 changes the value of a
but does not change the value of
b
, so they are no longer equal. We will have much more to say
about equality in a later chapter.
It’s important to start to develop a good mental model of the steps Python takes when evaluating an assignment statement. In an assignment statement Python first evaluates the code on the right hand side of the assignment operator. It then gives a name to whatever that is. The (very short) visualization below shows what is happening.
b = a
In the first statement a = 5 the literal number 5 evaluates to 5, and is given the name a. In the second statement, the variable a evaluates to 5 and so 5 now ends up with a second name b.
Note
In some programming languages, a different symbol is used for
assignment, such as <-
or :=
. The intent is that this
will help to avoid confusion. Python chose to use the tokens
=
for assignment, and ==
for equality. This is a
popular choice also found in languages like C, C++, Java, and
C#.
Check your understanding
data-10-1: After the following statements, what are the values of x and y?
x = 15
y = x
x = 22