When you learn Python coding, you start by learning about the tools you’ll need and the rules for each one of those tools. You learn the syntax of the
for loop and what it does, for example. With time, you also learn when to use this tool and when not to use it.
What’s more challenging in the early and not-so-early days when you learn Python coding is to join the dots between the various topics you learn and to view them as a coherent set of tools all working together.
Making the transition from knowing how to use lots of separate programming tools to seeing those tools as aspects of the same story is one of the rites of passage to move from beginner to intermediate, whichever way you define beginner and intermediate.
Learn Python With Monty and The White Room
OK, let’s get to the main point of this article, then. This blog post will introduce a narrative that describes how a computer program really works behind the scenes. Often, the best way to understand abstract concepts is by using analogies. So let me introduce you to The White Room analogy.
Let’s start by personifying the computer program. I call the program Monty. If you don’t get the reference, you can look up the origins of the name Python.
Monty is the one who’s busy doing things, performing all the actions required in your computer program. But Monty/the computer program needs some infrastructure to be able to operate. This infrastructure is the White Room: an empty room with white walls and white ceilings–a blank canvas.
However, the White Room is not entirely empty. There is a set of shelves on one of the walls where Monty can store things he may need later on.
The shelves are also not entirely empty. There is a small, red booklet on the bottom shelf with the label “built-in” on it. This booklet has several things that Monty can start using right away, such as
Let’s Start Writing A Python Program
Whenever you write any word in your computer program, Monty will look around the White Room to try and find this word. He’ll look inside the red “built-in” booklet, and he’ll also look at anything else that might be on the shelves or elsewhere in the room. However, when you start writing a program, there’s nothing other than the red “built-in” booklet in the room. Therefore this is the only place Monty can look.
You write the following:
Monty will look around the White Room. There’s only the red “built-in” booklet, so he looks through it until he finds the name
You now try writing the following:
But this time, you get the following error:
NameError: name 'hurray' is not defined
Monty looked everywhere in the White Room, but he couldn’t find the name
hurray anywhere, so he responds by saying: “I don’t know what the word
hurray is, sorry!”
What happens if you assign data to a name:
my_number = 10
Monty sees the assignment operator
= and he knows what he needs to do. He brings an empty box and sticks a label that says
my_number on the outside of the box. He then puts the number
10 inside the box and places the box on one of the shelves in the White Room.
Monty can’t see the number
10 as it’s inside the box. However, he can see the box’s label which says
my_number. So, from now on, whenever you use the name
my_number in your program, Monty will look around the White Room, and he’ll see the label on the box. Therefore, he’ll bring the box down and look at what’s inside the box, which in this case is the integer
Importing A Module
Let’s take this one step further:
import random my_number = random.randint(1, 10) print(my_number)
Let’s look at what happens when the program goes through these three lines of code.
When Monty sees the keyword
import, he knows he needs to go for a walk. He leaves the White Room and walks around the block until he sees a large building. This building is the town’s library. When he steps inside, he finds himself in a large hall with very high ceilings and bookshelves full of books covering every inch of every wall, from floor to ceiling.
There are over a hundred thousand books in this library. But Monty is looking for the book named
random. Once he finds it, he takes it with him back to the White Room and places it on one of the shelves in the White Room. The book’s name,
random, is visible on the spine of the book.
my_number = random.randint(1, 10)
Monty then moves on to the following line. He sees the assignment operator, so he gets a box and labels it
my_number. As Monty reads what’s on the right-hand side of the
= sign, he reads the name
random. Monty looks around the White Room and finds a book called
random. It’s the one he just brought from the library.
The dot after
random tells Monty to open the book, and he looks for the name
randint inside the
random book. Monty knows what to do when he finds this function, and he ends up with a number, let’s say
Monty places the number
7 inside the box labelled
my_number and puts the box on one of the shelves in the White Room.
Monty moves to the final line of code. This line starts with the name
my_number, which will be needed in
print(). This is where he spots the box with that label. He looks inside the box and fetches the number
7, which is stored in the box. This is the number he’ll use in
In the next blog post in The White Room Series, I’ll discuss functions in more detail and introduce the Function Room. If you wish, you can read the detailed description of the White Room analogy in the following standalone chapter of The Python Coding Book: The White Room: Understanding Programming.
I find analogies key to help me understand and learn Python. If you too like to visualise abstract concepts, you’ll hopefully find the White Room analogy a useful tool to learn Python coding.
Become a Member of
The Python Coding Place
The Python Coding Stack
Regular articles for the intermediate Python programmer or a beginner who wants to “read ahead”