Interactive Mode Revisited
When we first looked at interactive Python in the section called “Command-Line Interaction” we noted that Python executes
assignment statements silently, but prints the results of an expression
statement. Consider the following example.
>>>
pi=355/113.0
>>>
area=pi*2.2**2
>>>
area
15.205309734513278
The first two inputs are complete statements, so there is no
response. The third input is just an expression, so there is a
response.
It isn't obvious, but the value assigned to pi
isn't correct. Because we didn't see anything displayed, we didn't get any
feedback from our computation of pi
.
Python, however, has a handy way to help us. When we type a simple
expression in interactive Python, it secretly assigns the result to a
temporary variable named _
. This isn't a part of
scripting, but is a handy feature of an interactive session.
This comes in handy when exploring something rather complex.
Consider this interactive session. We evaluate a couple of expressions,
each of which is implicitly assigned to _
. We can then
save the value of _
in a second variable with an
easier-to-remember name, like pi
or
area
.
>>>
335/113.0
2.9646017699115044
>>>
355/113.0
3.1415929203539825
>>>
pi=_
>>>
pi*2.2**2
15.205309734513278
>>>
area=_
Note that we created a floating point object (2.964...), and Python
secretly assigned this object to _
. Then, we computed a
new floating point object (3.141...), which Python assigned to
_
. What happened to the first float, 2.964...? Python
garbage-collected this object, removing it from memory.
The second float that we created (3.141) was assigned to
_
. We then assigned it to pi
, also,
giving us two references to the object. When we computed another
floating-point value (15.205...), this was assigned to
_
. Does this mean our second float, 3.141... was
garbage collected? No, it wasn't garbage collected; it was still
referenced by the variable pi
.