2.10. Statements and Expressions
2.10. Statements and Expressions
Expressions
A statement is an instruction that the Python interpreter can execute. You have only seen the assignment
statement so far. Some other kinds of statements that you’ll see in future chapters are while statements,
for statements, if statements, and import statements. (There are other kinds too!)
An expression is a combination of literals, variable names, operators, and calls to functions. Expressions
need to be evaluated. The result of evaluating an expression is a value or object.
If you ask Python to print an expression, the interpreter evaluates the expression and displays the
result.
8
5
Activity: 2.10.2 ActiveCode (ac2_10_1)
In this example len is a built-in Python function that returns the number of characters in a string.
The evaluation of an expression produces a value, which is why expressions can appear on the right hand
side of assignment statements. A literal all by itself is a simple expression, and so is a variable.
5
3.14
In a program, anywhere that a literal value (a string or a number) is acceptable, a more complicated
expression is also acceptable. Here are all the kinds of expressions we’ve seen so far:
literal
e.g., “Hello” or 3.14
variable name
e.g., x or len
operator expression
<expression> operator-name <expression>
Notice that operator expressions (like + and * ) have sub-expressions before and after the operator.
Each of these can themselves be simple or complex expressions. In that way, you can build up to having
pretty complicated expressions.
17
Similarly, when calling a function, instead of putting a literal inside the parentheses, a complex expression
can be placed inside the parentheses. (Again, we provide some hidden code that defines the functions
square and sub ).
16
25
-3
With a function call, it’s even possible to have a complex expression before the left parenthesis, as long as
that expression evaluates to a function object. For now, though, we will just use variable names (like
square, sub, and len) that are directly bound to function objects.
It is important to start learning to read code that contains complex expressions. The Python interpreter
examines any line of code and parses it into components. For example, if it sees an = symbol, it will try to
treat the whole line as an assignment statement. It will expect to see a valid variable name to the left of the
=, and will parse everything to the right of the = as an expression. It will try to figure out whether the right
side is a literal, a variable name, an operator expression, or a function call expression. If it’s an operator
expression, it will further try to parse the sub-expressions before and after the operator. And so on. You
should learn to parse lines of code in the same way.
In order to evaluate an operator expression, the Python interpreter first completely evaluates the
expression before the operator, then the one after, then combines the two resulting values using the
operator. In order to evaluate a function call expression, the interpreter evaluates the expression before
the parentheses (i.e., it looks up the name of the function). Then it tries to evaluate each of the
expressions inside the parentheses. There may be more than one, separated by commas. The values of
those expressions are passed as inputs to the function when the function is called.
x
= 5
y = 7
add(square(y), square(x))
add(square(y), square(x))
-add-(square(y), square(x))
-add-(-square-(y), square(x))
-add-(-square-(7), square(x))
-add-(49, square(x))
-add-(49, -square-(x))
-add-(49, -square-(5))
-add-(49, 25)
74
Activity: 2.10.7 ShowEval (eval2_10_1)
To start giving you some practice in reading and understanding complicated expressions, try doing the two
Parsons problems below. Be careful not to indent any of the lines of code; that’s something that will come
later in the course.
Please order the code fragments in the order in which the Python interpreter would evaluate them. x is 2
and y is 3. Now the interpreter is executing square(sub(1+y, x)).
Check Reset
Perfect! It took you only one try to solve this. Great job!
Parsons (pp2_10_1a)
Please order the code fragments in the order in which the Python interpreter would evaluate them. x is 2
and y is 3. Now the interpreter is executing square(x + sub(square(y), 2 *x)).
Drag from here
multiply 2 * 2 to get 4
Check Reset
Perfect! It took you only one try to solve this. Great job!
Parsons (pp2_10_1)
You have attempted 10 of 10 activities on this page
Mark as Completed
© Copyright 2017 bradleymiller. Created using Runestone (http://runestoneinteractive.org/) 7.1.9. | Back to top