4.4: Encapsulation
- Page ID
- 40874
The first exercise asks you to put your square-drawing code into a function definition and then call the function, passing the turtle as a parameter. Here is a solution:
def square(t): for i in range(4): t.fd(100) t.lt(90) square(bob)
The innermost statements, fd
and lt
are indented twice to show that they are inside the for
loop, which is inside the function definition. The next line, square(bob)
, is flush with the left margin, which indicates the end of both the for loop and the function definition.
Inside the function, t
refers to the same turtle bob
, so t.lt(90)
has the same effect as bob.lt(90)
. In that case, why not call the parameter bob
? The idea is that t
can be any turtle, not just bob
, so you could create a second turtle and pass it as an argument to square
:
alice = turtle.Turtle() square(alice)
Wrapping a piece of code up in a function is called encapsulation. One of the benefits of encapsulation is that it attaches a name to the code, which serves as a kind of documentation. Another advantage is that if you re-use the code, it is more concise to call a function twice than to copy and paste the body!