# Chapter 7. Iteration

This chapter is about iteration, which is the ability to run a block of statements repeatedly. We saw a kind of iteration, using recursion, in “Recursion”. We saw another kind, using a `for`

loop, in “Simple Repetition”. In this chapter we’ll see yet another kind, using a `while`

statement. But first I want to say a little more about variable assignment.

# Reassignment

As you may have discovered, 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).

>>> x = 5 >>> x 5 >>> x = 7 >>> x 7

The first time we display `x`

, its value is 5; the second time, its value is 7.

Figure 7-1 shows what **reassignment** looks like in a state diagram.

At this point I want to address a common source of confusion. Because Python uses the equal sign (`=`

) for assignment, it is tempting to interpret a statement like `a = b`

as a mathematical proposition of equality; that is, the claim that `a`

and `b`

are equal. But this interpretation is wrong.

First, equality is a symmetric relationship and assignment is not. For example, in mathematics, if *a=7* then *7=a*. But in Python, the statement `a = 7`

is legal and `7 = a`

is not.

Also, in mathematics, a proposition of equality is either true or false for all time. If *a=b* now, then *a* will always equal *b*. In Python, an assignment statement can make two variables equal, but they don’t have to stay that way:

>>> a = 5 >>> b = a # a and b are now equal >>> ...

Get *Think Python, 2nd Edition* now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.