In Python, you can use expressions as statements too. But since the result of the expression won’t be saved, it makes sense to do so only if the expression does something useful as a side effect. Expressions are commonly used as statements in two situations:
Some functions and methods do lots of work without returning a value. Since you’re not interested in retaining the value they return, you can call such functions with an expression statement. Such functions are sometimes called procedures in other languages; in Python, they take the form of functions that don’t return a value.
As we’ve already seen, Python echoes back the results of
expressions typed at the interactive command line. Technically, these
are expression statements too; they serve as a shorthand for typing
print
statements.
Table 3.3 lists some common expression statement forms in Python; we’ve seen most before. Calls to functions and methods are coded with a list of objects (really, expressions that evaluate to objects) in parentheses after the function or method.
The last line in the table is a special form: Python lets us string
together magnitude comparison tests, in order to code chained
comparisons such as range tests. For instance,
the expression (A
<
B
<
C)
tests whether B
is between A
and C
; it’s equivalent to the Boolean test
(A
<
B
and
B
<
C)
but is easier on the eyes (and keyboard).
Compound expressions aren’t normally written as statements, but
it’s syntactically legal to do so and can even be useful at the
interactive prompt if you’re not sure of an expression’s
result.
Although expressions can appear as statements in Python, statements
can’t be used as expressions. For instance, unlike C, Python
doesn’t allow us to embed assignment statements
(=
) in other expressions. The rationale for this
is that it avoids common coding mistakes; you can’t
accidentally change a variable by typing =
when
you really mean to use the ==
equality test.