\chapter{Simple statements}
\indexii{simple}{statement}

Simple statements are comprised within a single logical line.
Several simple statements may occur on a single line separated
by semicolons.  The syntax for simple statements is:

\begin{verbatim}
simple_stmt:    expression_stmt
              | assignment_stmt
              | pass_stmt
              | del_stmt
              | print_stmt
              | return_stmt
              | raise_stmt
              | break_stmt
              | continue_stmt
              | import_stmt
              | global_stmt
              | access_stmt
              | exec_stmt
\end{verbatim}

\section{Expression statements}
\indexii{expression}{statement}

Expression statements are used (mostly interactively) to compute and
write a value, or (usually) to call a procedure (a function that
returns no meaningful result; in Python, procedures return the value
\verb@None@):

\begin{verbatim}
expression_stmt: expression_list
\end{verbatim}

An expression statement evaluates the expression list (which may be a
single expression).  If the value is not \verb@None@, it is converted
to a string using the rules for string conversions (expressions in
reverse quotes), and the resulting string is written to standard
output (see section \ref{print}) on a line by itself.
\indexii{expression}{list}
\ttindex{None}
\indexii{string}{conversion}
\index{output}
\indexii{standard}{output}
\indexii{writing}{values}

(The exception for \verb@None@ is made so that procedure calls, which
are syntactically equivalent to expressions, do not cause any output.
A tuple with only \verb@None@ items is written normally.)
\indexii{procedure}{call}

\section{Assignment statements}
\indexii{assignment}{statement}

Assignment statements are used to (re)bind names to values and to
modify attributes or items of mutable objects:
\indexii{binding}{name}
\indexii{rebinding}{name}
\obindex{mutable}
\indexii{attribute}{assignment}

\begin{verbatim}
assignment_stmt: (target_list "=")+ expression_list
target_list:     target ("," target)* [","]
target:          identifier | "(" target_list ")" | "[" target_list "]"
               | attributeref | subscription | slicing
\end{verbatim}

(See section \ref{primaries} for the syntax definitions for the last
three symbols.)

An assignment statement evaluates the expression list (remember that
this can be a single expression or a comma-separated list, the latter
yielding a tuple) and assigns the single resulting object to each of
the target lists, from left to right.
\indexii{expression}{list}

Assignment is defined recursively depending on the form of the target
(list).  When a target is part of a mutable object (an attribute
reference, subscription or slicing), the mutable object must
ultimately perform the assignment and decide about its validity, and
may raise an exception if the assignment is unacceptable.  The rules
observed by various types and the exceptions raised are given with the
definition of the object types (see section \ref{types}).
\index{target}
\indexii{target}{list}

Assignment of an object to a target list is recursively defined as
follows.
\indexiii{target}{list}{assignment}

\begin{itemize}
\item
If the target list is a single target: the object is assigned to that
target.

\item
If the target list is a comma-separated list of targets: the object
must be a tuple with the same number of items as the list contains
targets, and the items are assigned, from left to right, to the
corresponding targets.

\end{itemize}

Assignment of an object to a single target is recursively defined as
follows.

\begin{itemize} % nested

\item
If the target is an identifier (name):

\begin{itemize}

\item
If the name does not occur in a \verb@global@ statement in the current
code block: the name is bound to the object in the current local name
space.
\stindex{global}

\item
Otherwise: the name is bound to the object in the current global name
space.

\end{itemize} % nested

The name is rebound if it was already bound.

\item
If the target is a target list enclosed in parentheses: the object is
assigned to that target list as described above.

\item
If the target is a target list enclosed in square brackets: the object
must be a list with the same number of items as the target list
contains targets, and its items are assigned, from left to right, to
the corresponding targets.

\item
If the target is an attribute reference: The primary expression in the
reference is evaluated.  It should yield an object with assignable
attributes; if this is not the case, \verb@TypeError@ is raised.  That
object is then asked to assign the assigned object to the given
attribute; if it cannot perform the assignment, it raises an exception
(usually but not necessarily \verb@AttributeError@).
\indexii{attribute}{assignment}

\item
If the target is a subscription: The primary expression in the
reference is evaluated.  It should yield either a mutable sequence
(list) object or a mapping (dictionary) object.  Next, the subscript
expression is evaluated.
\indexii{subscription}{assignment}
\obindex{mutable}

If the primary is a mutable sequence object (a list), the subscript
must yield a plain integer.  If it is negative, the sequence's length
is added to it.  The resulting value must be a nonnegative integer
less than the sequence's length, and the sequence is asked to assign
the assigned object to its item with that index.  If the index is out
of range, \verb@IndexError@ is raised (assignment to a subscripted
sequence cannot add new items to a list).
\obindex{sequence}
\obindex{list}

If the primary is a mapping (dictionary) object, the subscript must
have a type compatible with the mapping's key type, and the mapping is
then asked to create a key/datum pair which maps the subscript to
the assigned object.  This can either replace an existing key/value
pair with the same key value, or insert a new key/value pair (if no
key with the same value existed).
\obindex{mapping}
\obindex{dictionary}

\item
If the target is a slicing: The primary expression in the reference is
evaluated.  It should yield a mutable sequence object (e.g. a list).  The
assigned object should be a sequence object of the same type.  Next,
the lower and upper bound expressions are evaluated, insofar they are
present; defaults are zero and the sequence's length.  The bounds
should evaluate to (small) integers.  If either bound is negative, the
sequence's length is added to it.  The resulting bounds are clipped to
lie between zero and the sequence's length, inclusive.  Finally, the
sequence object is asked to replace the slice with the items of the
assigned sequence.  The length of the slice may be different from the
length of the assigned sequence, thus changing the length of the
target sequence, if the object allows it.
\indexii{slicing}{assignment}

\end{itemize}
	
(In the current implementation, the syntax for targets is taken
to be the same as for expressions, and invalid syntax is rejected
during the code generation phase, causing less detailed error
messages.)

WARNING: Although the definition of assignment implies that overlaps
between the left-hand side and the right-hand side are `safe' (e.g.
\verb@a, b = b, a@ swaps two variables), overlaps within the
collection of assigned-to variables are not safe!  For instance, the
following program prints \code@[0, 2]@:

\begin{verbatim}
x = [0, 1]
i = 0
i, x[i] = 1, 2
print x
\end{verbatim}


\section{The {\tt pass} statement}
\stindex{pass}

\begin{verbatim}
pass_stmt:      "pass"
\end{verbatim}

\verb@pass@ is a null operation --- when it is executed, nothing
happens.  It is useful as a placeholder when a statement is
required syntactically, but no code needs to be executed, for example:
\indexii{null}{operation}

\begin{verbatim}
def f(arg): pass    # a function that does nothing (yet)

class C: pass       # an class with no methods (yet)
\end{verbatim}

\section{The {\tt del} statement}
\stindex{del}

\begin{verbatim}
del_stmt:       "del" target_list
\end{verbatim}

Deletion is recursively defined very similar to the way assignment is
defined. Rather that spelling it out in full details, here are some
hints.
\indexii{deletion}{target}
\indexiii{deletion}{target}{list}

Deletion of a target list recursively deletes each target, from left
to right.

Deletion of a name removes the binding of that name (which must exist)
from the local or global name space, depending on whether the name
occurs in a \verb@global@ statement in the same code block.
\stindex{global}
\indexii{unbinding}{name}

Deletion of attribute references, subscriptions and slicings
is passed to the primary object involved; deletion of a slicing
is in general equivalent to assignment of an empty slice of the
right type (but even this is determined by the sliced object).
\indexii{attribute}{deletion}

\section{The {\tt print} statement} \label{print}
\stindex{print}

\begin{verbatim}
print_stmt:     "print" [ condition ("," condition)* [","] ]
\end{verbatim}

\verb@print@ evaluates each condition in turn and writes the resulting
object to standard output (see below).  If an object is not a string,
it is first converted to a string using the rules for string
conversions.  The (resulting or original) string is then written.  A
space is written before each object is (converted and) written, unless
the output system believes it is positioned at the beginning of a
line.  This is the case: (1) when no characters have yet been written
to standard output; or (2) when the last character written to standard
output is \verb/\n/; or (3) when the last write operation on standard
output was not a \verb@print@ statement.  (In some cases it may be
functional to write an empty string to standard output for this
reason.)
\index{output}
\indexii{writing}{values}

A \verb/"\n"/ character is written at the end, unless the \verb@print@
statement ends with a comma.  This is the only action if the statement
contains just the keyword \verb@print@.
\indexii{trailing}{comma}
\indexii{newline}{suppression}

Standard output is defined as the file object named \verb@stdout@
in the built-in module \verb@sys@.  If no such object exists,
or if it is not a writable file, a \verb@RuntimeError@ exception is raised.
(The original implementation attempts to write to the system's original
standard output instead, but this is not safe, and should be fixed.)
\indexii{standard}{output}
\bimodindex{sys}
\ttindex{stdout}
\exindex{RuntimeError}

\section{The {\tt return} statement}
\stindex{return}

\begin{verbatim}
return_stmt:    "return" [condition_list]
\end{verbatim}

\verb@return@ may only occur syntactically nested in a function
definition, not within a nested class definition.
\indexii{function}{definition}
\indexii{class}{definition}

If a condition list is present, it is evaluated, else \verb@None@
is substituted.

\verb@return@ leaves the current function call with the condition
list (or \verb@None@) as return value.

When \verb@return@ passes control out of a \verb@try@ statement
with a \verb@finally@ clause, that finally clause is executed
before really leaving the function.
\kwindex{finally}

\section{The {\tt raise} statement}
\stindex{raise}

\begin{verbatim}
raise_stmt:     "raise" condition ["," condition]
\end{verbatim}

\verb@raise@ evaluates its first condition, which must yield
a string object.  If there is a second condition, this is evaluated,
else \verb@None@ is substituted.
\index{exception}
\indexii{raising}{exception}

It then raises the exception identified by the first object,
with the second one (or \verb@None@) as its parameter.

\section{The {\tt break} statement}
\stindex{break}

\begin{verbatim}
break_stmt:     "break"
\end{verbatim}

\verb@break@ may only occur syntactically nested in a \verb@for@
or \verb@while@ loop, but not nested in a function or class definition
within that loop.
\stindex{for}
\stindex{while}
\indexii{loop}{statement}

It terminates the nearest enclosing loop, skipping the optional
\verb@else@ clause if the loop has one.
\kwindex{else}

If a \verb@for@ loop is terminated by \verb@break@, the loop control
target keeps its current value.
\indexii{loop control}{target}

When \verb@break@ passes control out of a \verb@try@ statement
with a \verb@finally@ clause, that finally clause is executed
before really leaving the loop.
\kwindex{finally}

\section{The {\tt continue} statement}
\stindex{continue}

\begin{verbatim}
continue_stmt:  "continue"
\end{verbatim}

\verb@continue@ may only occur syntactically nested in a \verb@for@ or
\verb@while@ loop, but not nested in a function or class definition or
\verb@try@ statement within that loop.\footnote{Except that it may
currently occur within an {\tt except} clause.}
\stindex{for}
\stindex{while}
\indexii{loop}{statement}
\kwindex{finally}

It continues with the next cycle of the nearest enclosing loop.

\section{The {\tt import} statement} \label{import}
\stindex{import}

\begin{verbatim}
import_stmt:    "import" identifier ("," identifier)*
              | "from" identifier "import" identifier ("," identifier)*
              | "from" identifier "import" "*"
\end{verbatim}

Import statements are executed in two steps: (1) find a module, and
initialize it if necessary; (2) define a name or names in the local
name space (of the scope where the \verb@import@ statement occurs).
The first form (without \verb@from@) repeats these steps for each
identifier in the list, the \verb@from@ form performs them once, with
the first identifier specifying the module name.
\indexii{importing}{module}
\indexii{name}{binding}
\kwindex{from}

The system maintains a table of modules that have been initialized,
indexed by module name.  (The current implementation makes this table
accessible as \verb@sys.modules@.)  When a module name is found in
this table, step (1) is finished.  If not, a search for a module
definition is started.  This first looks for a built-in module
definition, and if no built-in module if the given name is found, it
searches a user-specified list of directories for a file whose name is
the module name with extension \verb@".py"@.  (The current
implementation uses the list of strings \verb@sys.path@ as the search
path; it is initialized from the shell environment variable
\verb@$PYTHONPATH@, with an installation-dependent default.)
\ttindex{modules}
\ttindex{sys.modules}
\indexii{module}{name}
\indexii{built-in}{module}
\indexii{user-defined}{module}
\bimodindex{sys}
\ttindex{path}
\ttindex{sys.path}
\indexii{filename}{extension}

If a built-in module is found, its built-in initialization code is
executed and step (1) is finished.  If no matching file is found,
\verb@ImportError@ is raised.  If a file is found, it is parsed,
yielding an executable code block.  If a syntax error occurs,
\verb@SyntaxError@ is raised.  Otherwise, an empty module of the given
name is created and inserted in the module table, and then the code
block is executed in the context of this module.  Exceptions during
this execution terminate step (1).
\indexii{module}{initialization}
\exindex{SyntaxError}
\exindex{ImportError}
\index{code block}

When step (1) finishes without raising an exception, step (2) can
begin.

The first form of \verb@import@ statement binds the module name in the
local name space to the module object, and then goes on to import the
next identifier, if any.  The \verb@from@ from does not bind the
module name: it goes through the list of identifiers, looks each one
of them up in the module found in step (1), and binds the name in the
local name space to the object thus found.  If a name is not found,
\verb@ImportError@ is raised.  If the list of identifiers is replaced
by a star (\verb@*@), all names defined in the module are bound,
except those beginning with an underscore(\verb@_@).
\indexii{name}{binding}
\exindex{ImportError}

Names bound by import statements may not occur in \verb@global@
statements in the same scope.
\stindex{global}

The \verb@from@ form with \verb@*@ may only occur in a module scope.
\kwindex{from}
\ttindex{from ... import *}

(The current implementation does not enforce the latter two
restrictions, but programs should not abuse this freedom, as future
implementations may enforce them or silently change the meaning of the
program.)

\section{The {\tt global} statement} \label{global}
\stindex{global}

\begin{verbatim}
global_stmt:    "global" identifier ("," identifier)*
\end{verbatim}

The \verb@global@ statement is a declaration which holds for the
entire current scope.  It means that the listed identifiers are to be
interpreted as globals.  While {\em using} global names is automatic
if they are not defined in the local scope, {\em assigning} to global
names would be impossible without \verb@global@.
\indexiii{global}{name}{binding}

Names listed in a \verb@global@ statement must not be used in the same
scope before that \verb@global@ statement is executed.

Names listed in a \verb@global@ statement must not be defined as formal
parameters or in a \verb@for@ loop control target, \verb@class@
definition, function definition, or \verb@import@ statement.

(The current implementation does not enforce the latter two
restrictions, but programs should not abuse this freedom, as future
implementations may enforce them or silently change the meaning of the
program.)

\section{The {\tt access} statement} \label{access}
\stindex{access}

\begin{verbatim}
access_stmt:    "access" ...
\end{verbatim}

This statement will be used in the future to control access to
instance and class variables.  Currently its syntax and effects are
undefined; however the keyword \verb@access@ is a reserved word for
the parser.

\section{The {\tt exec} statement} \label{exec}
\stindex{exec}

\begin{verbatim}
exec_stmt:    "exec" expression ["in" expression ["," expression]]
\end{verbatim}

This statement supports dynamic execution of Python code.  The first
expression should evaluate to either a string, an open file object, or
a code object.  If it is a string, the string is parsed as a suite of
Python statements which is then executed (unless a syntax error
occurs).  If it is an open file, the file is parsed until EOF and
executed.  If it is a code object, it is simply executed.

In all cases, if the optional parts are omitted, the code is executed
in the current scope.  If only the first expression after \verb@in@ is
specified, it should be a dictionary, which will be used for both the
global and the local variables.  If two expressions are given, both
must be dictionaries and they are used for the global and local
variables, respectively.

Note: dynamic evaluation of expressions is supported by the built-in
function \verb@eval@.

