Home | History | Annotate | Download | only in reference
      1 
      2 .. _simple:
      3 
      4 *****************
      5 Simple statements
      6 *****************
      7 
      8 .. index:: pair: simple; statement
      9 
     10 Simple statements are comprised within a single logical line. Several simple
     11 statements may occur on a single line separated by semicolons.  The syntax for
     12 simple statements is:
     13 
     14 .. productionlist::
     15    simple_stmt: `expression_stmt`
     16               : | `assert_stmt`
     17               : | `assignment_stmt`
     18               : | `augmented_assignment_stmt`
     19               : | `pass_stmt`
     20               : | `del_stmt`
     21               : | `print_stmt`
     22               : | `return_stmt`
     23               : | `yield_stmt`
     24               : | `raise_stmt`
     25               : | `break_stmt`
     26               : | `continue_stmt`
     27               : | `import_stmt`
     28               : | `global_stmt`
     29               : | `exec_stmt`
     30 
     31 
     32 .. _exprstmts:
     33 
     34 Expression statements
     35 =====================
     36 
     37 .. index::
     38    pair: expression; statement
     39    pair: expression; list
     40 
     41 Expression statements are used (mostly interactively) to compute and write a
     42 value, or (usually) to call a procedure (a function that returns no meaningful
     43 result; in Python, procedures return the value ``None``).  Other uses of
     44 expression statements are allowed and occasionally useful.  The syntax for an
     45 expression statement is:
     46 
     47 .. productionlist::
     48    expression_stmt: `expression_list`
     49 
     50 An expression statement evaluates the expression list (which may be a single
     51 expression).
     52 
     53 .. index::
     54    builtin: repr
     55    object: None
     56    pair: string; conversion
     57    single: output
     58    pair: standard; output
     59    pair: writing; values
     60    pair: procedure; call
     61 
     62 In interactive mode, if the value is not ``None``, it is converted to a string
     63 using the built-in :func:`repr` function and the resulting string is written to
     64 standard output (see section :ref:`print`) on a line by itself.  (Expression
     65 statements yielding ``None`` are not written, so that procedure calls do not
     66 cause any output.)
     67 
     68 
     69 .. _assignment:
     70 
     71 Assignment statements
     72 =====================
     73 
     74 .. index::
     75    single: =; assignment statement
     76    pair: assignment; statement
     77    pair: binding; name
     78    pair: rebinding; name
     79    object: mutable
     80    pair: attribute; assignment
     81 
     82 Assignment statements are used to (re)bind names to values and to modify
     83 attributes or items of mutable objects:
     84 
     85 .. productionlist::
     86    assignment_stmt: (`target_list` "=")+ (`expression_list` | `yield_expression`)
     87    target_list: `target` ("," `target`)* [","]
     88    target: `identifier`
     89          : | "(" `target_list` ")"
     90          : | "[" [`target_list`] "]"
     91          : | `attributeref`
     92          : | `subscription`
     93          : | `slicing`
     94 
     95 (See section :ref:`primaries` for the syntax definitions for the last three
     96 symbols.)
     97 
     98 .. index:: pair: expression; list
     99 
    100 An assignment statement evaluates the expression list (remember that this can be
    101 a single expression or a comma-separated list, the latter yielding a tuple) and
    102 assigns the single resulting object to each of the target lists, from left to
    103 right.
    104 
    105 .. index::
    106    single: target
    107    pair: target; list
    108 
    109 Assignment is defined recursively depending on the form of the target (list).
    110 When a target is part of a mutable object (an attribute reference, subscription
    111 or slicing), the mutable object must ultimately perform the assignment and
    112 decide about its validity, and may raise an exception if the assignment is
    113 unacceptable.  The rules observed by various types and the exceptions raised are
    114 given with the definition of the object types (see section :ref:`types`).
    115 
    116 .. index:: triple: target; list; assignment
    117 
    118 Assignment of an object to a target list is recursively defined as follows.
    119 
    120 * If the target list is a single target: The object is assigned to that target.
    121 
    122 * If the target list is a comma-separated list of targets: The object must be an
    123   iterable with the same number of items as there are targets in the target list,
    124   and the items are assigned, from left to right, to the corresponding targets.
    125 
    126 Assignment of an object to a single target is recursively defined as follows.
    127 
    128 * If the target is an identifier (name):
    129 
    130     .. index:: statement: global
    131 
    132   * If the name does not occur in a :keyword:`global` statement in the current
    133     code block: the name is bound to the object in the current local namespace.
    134 
    135   * Otherwise: the name is bound to the object in the current global namespace.
    136 
    137   .. index:: single: destructor
    138 
    139   The name is rebound if it was already bound.  This may cause the reference count
    140   for the object previously bound to the name to reach zero, causing the object to
    141   be deallocated and its destructor (if it has one) to be called.
    142 
    143 * If the target is a target list enclosed in parentheses or in square brackets:
    144   The object must be an iterable with the same number of items as there are
    145   targets in the target list, and its items are assigned, from left to right,
    146   to the corresponding targets.
    147 
    148   .. index:: pair: attribute; assignment
    149 
    150 * If the target is an attribute reference: The primary expression in the
    151   reference is evaluated.  It should yield an object with assignable attributes;
    152   if this is not the case, :exc:`TypeError` is raised.  That object is then
    153   asked to assign the assigned object to the given attribute; if it cannot
    154   perform the assignment, it raises an exception (usually but not necessarily
    155   :exc:`AttributeError`).
    156 
    157   .. _attr-target-note:
    158 
    159   Note: If the object is a class instance and the attribute reference occurs on
    160   both sides of the assignment operator, the RHS expression, ``a.x`` can access
    161   either an instance attribute or (if no instance attribute exists) a class
    162   attribute.  The LHS target ``a.x`` is always set as an instance attribute,
    163   creating it if necessary.  Thus, the two occurrences of ``a.x`` do not
    164   necessarily refer to the same attribute: if the RHS expression refers to a
    165   class attribute, the LHS creates a new instance attribute as the target of the
    166   assignment::
    167 
    168      class Cls:
    169          x = 3             # class variable
    170      inst = Cls()
    171      inst.x = inst.x + 1   # writes inst.x as 4 leaving Cls.x as 3
    172 
    173   This description does not necessarily apply to descriptor attributes, such as
    174   properties created with :func:`property`.
    175 
    176   .. index::
    177      pair: subscription; assignment
    178      object: mutable
    179 
    180 * If the target is a subscription: The primary expression in the reference is
    181   evaluated.  It should yield either a mutable sequence object (such as a list) or
    182   a mapping object (such as a dictionary). Next, the subscript expression is
    183   evaluated.
    184 
    185   .. index::
    186      object: sequence
    187      object: list
    188 
    189   If the primary is a mutable sequence object (such as a list), the subscript must
    190   yield a plain integer.  If it is negative, the sequence's length is added to it.
    191   The resulting value must be a nonnegative integer less than the sequence's
    192   length, and the sequence is asked to assign the assigned object to its item with
    193   that index.  If the index is out of range, :exc:`IndexError` is raised
    194   (assignment to a subscripted sequence cannot add new items to a list).
    195 
    196   .. index::
    197      object: mapping
    198      object: dictionary
    199 
    200   If the primary is a mapping object (such as a dictionary), the subscript must
    201   have a type compatible with the mapping's key type, and the mapping is then
    202   asked to create a key/datum pair which maps the subscript to the assigned
    203   object.  This can either replace an existing key/value pair with the same key
    204   value, or insert a new key/value pair (if no key with the same value existed).
    205 
    206   .. index:: pair: slicing; assignment
    207 
    208 * If the target is a slicing: The primary expression in the reference is
    209   evaluated.  It should yield a mutable sequence object (such as a list).  The
    210   assigned object should be a sequence object of the same type.  Next, the lower
    211   and upper bound expressions are evaluated, insofar they are present; defaults
    212   are zero and the sequence's length.  The bounds should evaluate to (small)
    213   integers.  If either bound is negative, the sequence's length is added to it.
    214   The resulting bounds are clipped to lie between zero and the sequence's length,
    215   inclusive.  Finally, the sequence object is asked to replace the slice with the
    216   items of the assigned sequence.  The length of the slice may be different from
    217   the length of the assigned sequence, thus changing the length of the target
    218   sequence, if the object allows it.
    219 
    220 .. impl-detail::
    221 
    222    In the current implementation, the syntax for targets is taken to be the same
    223    as for expressions, and invalid syntax is rejected during the code generation
    224    phase, causing less detailed error messages.
    225 
    226 WARNING: Although the definition of assignment implies that overlaps between the
    227 left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
    228 swaps two variables), overlaps *within* the collection of assigned-to variables
    229 are not safe!  For instance, the following program prints ``[0, 2]``::
    230 
    231    x = [0, 1]
    232    i = 0
    233    i, x[i] = 1, 2
    234    print x
    235 
    236 
    237 .. _augassign:
    238 
    239 Augmented assignment statements
    240 -------------------------------
    241 
    242 .. index::
    243    pair: augmented; assignment
    244    single: statement; assignment, augmented
    245    single: +=; augmented assignment
    246    single: -=; augmented assignment
    247    single: *=; augmented assignment
    248    single: /=; augmented assignment
    249    single: %=; augmented assignment
    250    single: &=; augmented assignment
    251    single: ^=; augmented assignment
    252    single: |=; augmented assignment
    253    single: **=; augmented assignment
    254    single: //=; augmented assignment
    255    single: >>=; augmented assignment
    256    single: <<=; augmented assignment
    257 
    258 Augmented assignment is the combination, in a single statement, of a binary
    259 operation and an assignment statement:
    260 
    261 .. productionlist::
    262    augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
    263    augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
    264    augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
    265         : | ">>=" | "<<=" | "&=" | "^=" | "|="
    266 
    267 (See section :ref:`primaries` for the syntax definitions for the last three
    268 symbols.)
    269 
    270 An augmented assignment evaluates the target (which, unlike normal assignment
    271 statements, cannot be an unpacking) and the expression list, performs the binary
    272 operation specific to the type of assignment on the two operands, and assigns
    273 the result to the original target.  The target is only evaluated once.
    274 
    275 An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
    276 1`` to achieve a similar, but not exactly equal effect. In the augmented
    277 version, ``x`` is only evaluated once. Also, when possible, the actual operation
    278 is performed *in-place*, meaning that rather than creating a new object and
    279 assigning that to the target, the old object is modified instead.
    280 
    281 With the exception of assigning to tuples and multiple targets in a single
    282 statement, the assignment done by augmented assignment statements is handled the
    283 same way as normal assignments. Similarly, with the exception of the possible
    284 *in-place* behavior, the binary operation performed by augmented assignment is
    285 the same as the normal binary operations.
    286 
    287 For targets which are attribute references, the same :ref:`caveat about class
    288 and instance attributes <attr-target-note>` applies as for regular assignments.
    289 
    290 
    291 .. _assert:
    292 
    293 The :keyword:`assert` statement
    294 ===============================
    295 
    296 .. index::
    297    statement: assert
    298    pair: debugging; assertions
    299 
    300 Assert statements are a convenient way to insert debugging assertions into a
    301 program:
    302 
    303 .. productionlist::
    304    assert_stmt: "assert" `expression` ["," `expression`]
    305 
    306 The simple form, ``assert expression``, is equivalent to ::
    307 
    308    if __debug__:
    309        if not expression: raise AssertionError
    310 
    311 The extended form, ``assert expression1, expression2``, is equivalent to ::
    312 
    313    if __debug__:
    314        if not expression1: raise AssertionError(expression2)
    315 
    316 .. index::
    317    single: __debug__
    318    exception: AssertionError
    319 
    320 These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
    321 the built-in variables with those names.  In the current implementation, the
    322 built-in variable :const:`__debug__` is ``True`` under normal circumstances,
    323 ``False`` when optimization is requested (command line option -O).  The current
    324 code generator emits no code for an assert statement when optimization is
    325 requested at compile time.  Note that it is unnecessary to include the source
    326 code for the expression that failed in the error message; it will be displayed
    327 as part of the stack trace.
    328 
    329 Assignments to :const:`__debug__` are illegal.  The value for the built-in variable
    330 is determined when the interpreter starts.
    331 
    332 
    333 .. _pass:
    334 
    335 The :keyword:`pass` statement
    336 =============================
    337 
    338 .. index::
    339    statement: pass
    340    pair: null; operation
    341 
    342 .. productionlist::
    343    pass_stmt: "pass"
    344 
    345 :keyword:`pass` is a null operation --- when it is executed, nothing happens.
    346 It is useful as a placeholder when a statement is required syntactically, but no
    347 code needs to be executed, for example::
    348 
    349    def f(arg): pass    # a function that does nothing (yet)
    350 
    351    class C: pass       # a class with no methods (yet)
    352 
    353 
    354 .. _del:
    355 
    356 The :keyword:`del` statement
    357 ============================
    358 
    359 .. index::
    360    statement: del
    361    pair: deletion; target
    362    triple: deletion; target; list
    363 
    364 .. productionlist::
    365    del_stmt: "del" `target_list`
    366 
    367 Deletion is recursively defined very similar to the way assignment is defined.
    368 Rather than spelling it out in full details, here are some hints.
    369 
    370 Deletion of a target list recursively deletes each target, from left to right.
    371 
    372 .. index::
    373    statement: global
    374    pair: unbinding; name
    375 
    376 Deletion of a name removes the binding of that name  from the local or global
    377 namespace, depending on whether the name occurs in a :keyword:`global` statement
    378 in the same code block.  If the name is unbound, a :exc:`NameError` exception
    379 will be raised.
    380 
    381 .. index:: pair: free; variable
    382 
    383 It is illegal to delete a name from the local namespace if it occurs as a free
    384 variable in a nested block.
    385 
    386 .. index:: pair: attribute; deletion
    387 
    388 Deletion of attribute references, subscriptions and slicings is passed to the
    389 primary object involved; deletion of a slicing is in general equivalent to
    390 assignment of an empty slice of the right type (but even this is determined by
    391 the sliced object).
    392 
    393 
    394 .. _print:
    395 
    396 The :keyword:`print` statement
    397 ==============================
    398 
    399 .. index:: statement: print
    400 
    401 .. productionlist::
    402    print_stmt: "print" ([`expression` ("," `expression`)* [","]]
    403              : | ">>" `expression` [("," `expression`)+ [","]])
    404 
    405 :keyword:`print` evaluates each expression in turn and writes the resulting
    406 object to standard output (see below).  If an object is not a string, it is
    407 first converted to a string using the rules for string conversions.  The
    408 (resulting or original) string is then written.  A space is written before each
    409 object is (converted and) written, unless the output system believes it is
    410 positioned at the beginning of a line.  This is the case (1) when no characters
    411 have yet been written to standard output, (2) when the last character written to
    412 standard output is a whitespace character except ``' '``, or (3) when the last
    413 write operation on standard output was not a :keyword:`print` statement.
    414 (In some cases it may be functional to write an empty string to standard output
    415 for this reason.)
    416 
    417 .. note::
    418 
    419    Objects which act like file objects but which are not the built-in file objects
    420    often do not properly emulate this aspect of the file object's behavior, so it
    421    is best not to rely on this.
    422 
    423 .. index::
    424    single: output
    425    pair: writing; values
    426    pair: trailing; comma
    427    pair: newline; suppression
    428 
    429 A ``'\n'`` character is written at the end, unless the :keyword:`print`
    430 statement ends with a comma.  This is the only action if the statement contains
    431 just the keyword :keyword:`print`.
    432 
    433 .. index::
    434    pair: standard; output
    435    module: sys
    436    single: stdout (in module sys)
    437    exception: RuntimeError
    438 
    439 Standard output is defined as the file object named ``stdout`` in the built-in
    440 module :mod:`sys`.  If no such object exists, or if it does not have a
    441 :meth:`write` method, a :exc:`RuntimeError` exception is raised.
    442 
    443 .. index:: single: extended print statement
    444 
    445 :keyword:`print` also has an extended form, defined by the second portion of the
    446 syntax described above. This form is sometimes referred to as ":keyword:`print`
    447 chevron." In this form, the first expression after the ``>>`` must evaluate to a
    448 "file-like" object, specifically an object that has a :meth:`write` method as
    449 described above.  With this extended form, the subsequent expressions are
    450 printed to this file object.  If the first expression evaluates to ``None``,
    451 then ``sys.stdout`` is used as the file for output.
    452 
    453 
    454 .. _return:
    455 
    456 The :keyword:`return` statement
    457 ===============================
    458 
    459 .. index::
    460    statement: return
    461    pair: function; definition
    462    pair: class; definition
    463 
    464 .. productionlist::
    465    return_stmt: "return" [`expression_list`]
    466 
    467 :keyword:`return` may only occur syntactically nested in a function definition,
    468 not within a nested class definition.
    469 
    470 If an expression list is present, it is evaluated, else ``None`` is substituted.
    471 
    472 :keyword:`return` leaves the current function call with the expression list (or
    473 ``None``) as return value.
    474 
    475 .. index:: keyword: finally
    476 
    477 When :keyword:`return` passes control out of a :keyword:`try` statement with a
    478 :keyword:`finally` clause, that :keyword:`finally` clause is executed before
    479 really leaving the function.
    480 
    481 In a generator function, the :keyword:`return` statement is not allowed to
    482 include an :token:`expression_list`.  In that context, a bare :keyword:`return`
    483 indicates that the generator is done and will cause :exc:`StopIteration` to be
    484 raised.
    485 
    486 
    487 .. _yield:
    488 
    489 The :keyword:`yield` statement
    490 ==============================
    491 
    492 .. index::
    493    statement: yield
    494    single: generator; function
    495    single: generator; iterator
    496    single: function; generator
    497    exception: StopIteration
    498 
    499 .. productionlist::
    500    yield_stmt: `yield_expression`
    501 
    502 The :keyword:`yield` statement is only used when defining a generator function,
    503 and is only used in the body of the generator function. Using a :keyword:`yield`
    504 statement in a function definition is sufficient to cause that definition to
    505 create a generator function instead of a normal function.
    506 
    507 When a generator function is called, it returns an iterator known as a generator
    508 iterator, or more commonly, a generator.  The body of the generator function is
    509 executed by calling the generator's :meth:`~generator.next` method repeatedly
    510 until it raises an exception.
    511 
    512 When a :keyword:`yield` statement is executed, the state of the generator is
    513 frozen and the value of :token:`expression_list` is returned to
    514 :meth:`~generator.next`'s caller.  By "frozen" we mean that all local state is
    515 retained, including the current bindings of local variables, the instruction
    516 pointer, and the internal evaluation stack: enough information is saved so that
    517 the next time :meth:`~generator.next` is invoked, the function can proceed
    518 exactly as if the :keyword:`yield` statement were just another external call.
    519 
    520 As of Python version 2.5, the :keyword:`yield` statement is now allowed in the
    521 :keyword:`try` clause of a :keyword:`try` ...  :keyword:`finally` construct.  If
    522 the generator is not resumed before it is finalized (by reaching a zero
    523 reference count or by being garbage collected), the generator-iterator's
    524 :meth:`close` method will be called, allowing any pending :keyword:`finally`
    525 clauses to execute.
    526 
    527 For full details of :keyword:`yield` semantics, refer to the :ref:`yieldexpr`
    528 section.
    529 
    530 .. note::
    531 
    532    In Python 2.2, the :keyword:`yield` statement was only allowed when the
    533    ``generators`` feature has been enabled.  This ``__future__``
    534    import statement was used to enable the feature::
    535 
    536       from __future__ import generators
    537 
    538 
    539 .. seealso::
    540 
    541    :pep:`255` - Simple Generators
    542       The proposal for adding generators and the :keyword:`yield` statement to Python.
    543 
    544    :pep:`342` - Coroutines via Enhanced Generators
    545       The proposal that, among other generator enhancements, proposed allowing
    546       :keyword:`yield` to appear inside a :keyword:`try` ... :keyword:`finally` block.
    547 
    548 
    549 .. _raise:
    550 
    551 The :keyword:`raise` statement
    552 ==============================
    553 
    554 .. index::
    555    statement: raise
    556    single: exception
    557    pair: raising; exception
    558 
    559 .. productionlist::
    560    raise_stmt: "raise" [`expression` ["," `expression` ["," `expression`]]]
    561 
    562 If no expressions are present, :keyword:`raise` re-raises the last exception
    563 that was active in the current scope.  If no exception is active in the current
    564 scope, a :exc:`TypeError` exception is raised indicating that this is an error
    565 (if running under IDLE, a :exc:`Queue.Empty` exception is raised instead).
    566 
    567 Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
    568 using ``None`` as the value of omitted expressions.  The first two objects are
    569 used to determine the *type* and *value* of the exception.
    570 
    571 If the first object is an instance, the type of the exception is the class of
    572 the instance, the instance itself is the value, and the second object must be
    573 ``None``.
    574 
    575 If the first object is a class, it becomes the type of the exception. The second
    576 object is used to determine the exception value: If it is an instance of the
    577 class, the instance becomes the exception value. If the second object is a
    578 tuple, it is used as the argument list for the class constructor; if it is
    579 ``None``, an empty argument list is used, and any other object is treated as a
    580 single argument to the constructor.  The instance so created by calling the
    581 constructor is used as the exception value.
    582 
    583 .. index:: object: traceback
    584 
    585 If a third object is present and not ``None``, it must be a traceback object
    586 (see section :ref:`types`), and it is substituted instead of the current
    587 location as the place where the exception occurred.  If the third object is
    588 present and not a traceback object or ``None``, a :exc:`TypeError` exception is
    589 raised.  The three-expression form of :keyword:`raise` is useful to re-raise an
    590 exception transparently in an except clause, but :keyword:`raise` with no
    591 expressions should be preferred if the exception to be re-raised was the most
    592 recently active exception in the current scope.
    593 
    594 Additional information on exceptions can be found in section :ref:`exceptions`,
    595 and information about handling exceptions is in section :ref:`try`.
    596 
    597 
    598 .. _break:
    599 
    600 The :keyword:`break` statement
    601 ==============================
    602 
    603 .. index::
    604    statement: break
    605    statement: for
    606    statement: while
    607    pair: loop; statement
    608 
    609 .. productionlist::
    610    break_stmt: "break"
    611 
    612 :keyword:`break` may only occur syntactically nested in a :keyword:`for` or
    613 :keyword:`while` loop, but not nested in a function or class definition within
    614 that loop.
    615 
    616 .. index:: keyword: else
    617 
    618 It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
    619 clause if the loop has one.
    620 
    621 .. index:: pair: loop control; target
    622 
    623 If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
    624 target keeps its current value.
    625 
    626 .. index:: keyword: finally
    627 
    628 When :keyword:`break` passes control out of a :keyword:`try` statement with a
    629 :keyword:`finally` clause, that :keyword:`finally` clause is executed before
    630 really leaving the loop.
    631 
    632 
    633 .. _continue:
    634 
    635 The :keyword:`continue` statement
    636 =================================
    637 
    638 .. index::
    639    statement: continue
    640    statement: for
    641    statement: while
    642    pair: loop; statement
    643    keyword: finally
    644 
    645 .. productionlist::
    646    continue_stmt: "continue"
    647 
    648 :keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
    649 :keyword:`while` loop, but not nested in a function or class definition or
    650 :keyword:`finally` clause within that loop.  It continues with the next
    651 cycle of the nearest enclosing loop.
    652 
    653 When :keyword:`continue` passes control out of a :keyword:`try` statement with a
    654 :keyword:`finally` clause, that :keyword:`finally` clause is executed before
    655 really starting the next loop cycle.
    656 
    657 
    658 .. _import:
    659 .. _from:
    660 
    661 The :keyword:`import` statement
    662 ===============================
    663 
    664 .. index::
    665    statement: import
    666    single: module; importing
    667    pair: name; binding
    668    keyword: from
    669    single: as; import statement
    670 
    671 .. productionlist::
    672    import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
    673               : | "from" `relative_module` "import" `identifier` ["as" `name`]
    674               : ( "," `identifier` ["as" `name`] )*
    675               : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
    676               : ( "," `identifier` ["as" `name`] )* [","] ")"
    677               : | "from" `module` "import" "*"
    678    module: (`identifier` ".")* `identifier`
    679    relative_module: "."* `module` | "."+
    680    name: `identifier`
    681 
    682 Import statements are executed in two steps: (1) find a module, and initialize
    683 it if necessary; (2) define a name or names in the local namespace (of the scope
    684 where the :keyword:`import` statement occurs). The statement comes in two
    685 forms differing on whether it uses the :keyword:`from` keyword. The first form
    686 (without :keyword:`from`) repeats these steps for each identifier in the list.
    687 The form with :keyword:`from` performs step (1) once, and then performs step
    688 (2) repeatedly.
    689 
    690 .. index::
    691     single: package
    692 
    693 To understand how step (1) occurs, one must first understand how Python handles
    694 hierarchical naming of modules. To help organize modules and provide a
    695 hierarchy in naming, Python has a concept of packages. A package can contain
    696 other packages and modules while modules cannot contain other modules or
    697 packages. From a file system perspective, packages are directories and modules
    698 are files.
    699 
    700 .. index::
    701     single: sys.modules
    702 
    703 Once the name of the module is known (unless otherwise specified, the term
    704 "module" will refer to both packages and modules), searching
    705 for the module or package can begin. The first place checked is
    706 :data:`sys.modules`, the cache of all modules that have been imported
    707 previously. If the module is found there then it is used in step (2) of import.
    708 
    709 .. index::
    710     single: sys.meta_path
    711     single: finder
    712     pair: finder; find_module
    713     single: __path__
    714 
    715 If the module is not found in the cache, then :data:`sys.meta_path` is searched
    716 (the specification for :data:`sys.meta_path` can be found in :pep:`302`).
    717 The object is a list of :term:`finder` objects which are queried in order as to
    718 whether they know how to load the module by calling their :meth:`find_module`
    719 method with the name of the module. If the module happens to be contained
    720 within a package (as denoted by the existence of a dot in the name), then a
    721 second argument to :meth:`find_module` is given as the value of the
    722 :attr:`__path__` attribute from the parent package (everything up to the last
    723 dot in the name of the module being imported). If a finder can find the module
    724 it returns a :term:`loader` (discussed later) or returns ``None``.
    725 
    726 .. index::
    727     single: sys.path_hooks
    728     single: sys.path_importer_cache
    729     single: sys.path
    730 
    731 If none of the finders on :data:`sys.meta_path` are able to find the module
    732 then some implicitly defined finders are queried. Implementations of Python
    733 vary in what implicit meta path finders are defined. The one they all do
    734 define, though, is one that handles :data:`sys.path_hooks`,
    735 :data:`sys.path_importer_cache`, and :data:`sys.path`.
    736 
    737 The implicit finder searches for the requested module in the "paths" specified
    738 in one of two places ("paths" do not have to be file system paths). If the
    739 module being imported is supposed to be contained within a package then the
    740 second argument passed to :meth:`find_module`, :attr:`__path__` on the parent
    741 package, is used as the source of paths. If the module is not contained in a
    742 package then :data:`sys.path` is used as the source of paths.
    743 
    744 Once the source of paths is chosen it is iterated over to find a finder that
    745 can handle that path. The dict at :data:`sys.path_importer_cache` caches
    746 finders for paths and is checked for a finder. If the path does not have a
    747 finder cached then :data:`sys.path_hooks` is searched by calling each object in
    748 the list with a single argument of the path, returning a finder or raises
    749 :exc:`ImportError`. If a finder is returned then it is cached in
    750 :data:`sys.path_importer_cache` and then used for that path entry. If no finder
    751 can be found but the path exists then a value of ``None`` is
    752 stored in :data:`sys.path_importer_cache` to signify that an implicit,
    753 file-based finder that handles modules stored as individual files should be
    754 used for that path. If the path does not exist then a finder which always
    755 returns ``None`` is placed in the cache for the path.
    756 
    757 .. index::
    758     single: loader
    759     pair: loader; load_module
    760     exception: ImportError
    761 
    762 If no finder can find the module then :exc:`ImportError` is raised. Otherwise
    763 some finder returned a loader whose :meth:`load_module` method is called with
    764 the name of the module to load (see :pep:`302` for the original definition of
    765 loaders). A loader has several responsibilities to perform on a module it
    766 loads. First, if the module already exists in :data:`sys.modules` (a
    767 possibility if the loader is called outside of the import machinery) then it
    768 is to use that module for initialization and not a new module. But if the
    769 module does not exist in :data:`sys.modules` then it is to be added to that
    770 dict before initialization begins. If an error occurs during loading of the
    771 module and it was added to :data:`sys.modules` it is to be removed from the
    772 dict. If an error occurs but the module was already in :data:`sys.modules` it
    773 is left in the dict.
    774 
    775 .. index::
    776     single: __name__
    777     single: __file__
    778     single: __path__
    779     single: __package__
    780     single: __loader__
    781 
    782 The loader must set several attributes on the module. :data:`__name__` is to be
    783 set to the name of the module. :data:`__file__` is to be the "path" to the file
    784 unless the module is built-in (and thus listed in
    785 :data:`sys.builtin_module_names`) in which case the attribute is not set.
    786 If what is being imported is a package then :data:`__path__` is to be set to a
    787 list of paths to be searched when looking for modules and packages contained
    788 within the package being imported. :data:`__package__` is optional but should
    789 be set to the name of package that contains the module or package (the empty
    790 string is used for module not contained in a package). :data:`__loader__` is
    791 also optional but should be set to the loader object that is loading the
    792 module.
    793 
    794 .. index::
    795     exception: ImportError
    796 
    797 If an error occurs during loading then the loader raises :exc:`ImportError` if
    798 some other exception is not already being propagated. Otherwise the loader
    799 returns the module that was loaded and initialized.
    800 
    801 When step (1) finishes without raising an exception, step (2) can begin.
    802 
    803 The first form of :keyword:`import` statement binds the module name in the local
    804 namespace to the module object, and then goes on to import the next identifier,
    805 if any.  If the module name is followed by :keyword:`as`, the name following
    806 :keyword:`as` is used as the local name for the module.
    807 
    808 .. index::
    809    pair: name; binding
    810    exception: ImportError
    811 
    812 The :keyword:`from` form does not bind the module name: it goes through the list
    813 of identifiers, looks each one of them up in the module found in step (1), and
    814 binds the name in the local namespace to the object thus found.  As with the
    815 first form of :keyword:`import`, an alternate local name can be supplied by
    816 specifying ":keyword:`as` localname".  If a name is not found,
    817 :exc:`ImportError` is raised.  If the list of identifiers is replaced by a star
    818 (``'*'``), all public names defined in the module are bound in the local
    819 namespace of the :keyword:`import` statement..
    820 
    821 .. index:: single: __all__ (optional module attribute)
    822 
    823 The *public names* defined by a module are determined by checking the module's
    824 namespace for a variable named ``__all__``; if defined, it must be a sequence of
    825 strings which are names defined or imported by that module.  The names given in
    826 ``__all__`` are all considered public and are required to exist.  If ``__all__``
    827 is not defined, the set of public names includes all names found in the module's
    828 namespace which do not begin with an underscore character (``'_'``).
    829 ``__all__`` should contain the entire public API. It is intended to avoid
    830 accidentally exporting items that are not part of the API (such as library
    831 modules which were imported and used within the module).
    832 
    833 The :keyword:`from` form with ``*`` may only occur in a module scope.  If the
    834 wild card form of import --- ``import *`` --- is used in a function and the
    835 function contains or is a nested block with free variables, the compiler will
    836 raise a :exc:`SyntaxError`.
    837 
    838 .. index::
    839     single: relative; import
    840 
    841 When specifying what module to import you do not have to specify the absolute
    842 name of the module. When a module or package is contained within another
    843 package it is possible to make a relative import within the same top package
    844 without having to mention the package name. By using leading dots in the
    845 specified module or package after :keyword:`from` you can specify how high to
    846 traverse up the current package hierarchy without specifying exact names. One
    847 leading dot means the current package where the module making the import
    848 exists. Two dots means up one package level. Three dots is up two levels, etc.
    849 So if you execute ``from . import mod`` from a module in the ``pkg`` package
    850 then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
    851 import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
    852 The specification for relative imports is contained within :pep:`328`.
    853 
    854 :func:`importlib.import_module` is provided to support applications that
    855 determine which modules need to be loaded dynamically.
    856 
    857 
    858 .. _future:
    859 
    860 Future statements
    861 -----------------
    862 
    863 .. index:: pair: future; statement
    864 
    865 A :dfn:`future statement` is a directive to the compiler that a particular
    866 module should be compiled using syntax or semantics that will be available in a
    867 specified future release of Python.  The future statement is intended to ease
    868 migration to future versions of Python that introduce incompatible changes to
    869 the language.  It allows use of the new features on a per-module basis before
    870 the release in which the feature becomes standard.
    871 
    872 .. productionlist:: *
    873    future_statement: "from" "__future__" "import" feature ["as" name]
    874                    : ("," feature ["as" name])*
    875                    : | "from" "__future__" "import" "(" feature ["as" name]
    876                    : ("," feature ["as" name])* [","] ")"
    877    feature: identifier
    878    name: identifier
    879 
    880 A future statement must appear near the top of the module.  The only lines that
    881 can appear before a future statement are:
    882 
    883 * the module docstring (if any),
    884 * comments,
    885 * blank lines, and
    886 * other future statements.
    887 
    888 The features recognized by Python 2.6 are ``unicode_literals``,
    889 ``print_function``, ``absolute_import``, ``division``, ``generators``,
    890 ``nested_scopes`` and ``with_statement``.  ``generators``, ``with_statement``,
    891 ``nested_scopes`` are redundant in Python version 2.6 and above because they are
    892 always enabled.
    893 
    894 A future statement is recognized and treated specially at compile time: Changes
    895 to the semantics of core constructs are often implemented by generating
    896 different code.  It may even be the case that a new feature introduces new
    897 incompatible syntax (such as a new reserved word), in which case the compiler
    898 may need to parse the module differently.  Such decisions cannot be pushed off
    899 until runtime.
    900 
    901 For any given release, the compiler knows which feature names have been defined,
    902 and raises a compile-time error if a future statement contains a feature not
    903 known to it.
    904 
    905 The direct runtime semantics are the same as for any import statement: there is
    906 a standard module :mod:`__future__`, described later, and it will be imported in
    907 the usual way at the time the future statement is executed.
    908 
    909 The interesting runtime semantics depend on the specific feature enabled by the
    910 future statement.
    911 
    912 Note that there is nothing special about the statement::
    913 
    914    import __future__ [as name]
    915 
    916 That is not a future statement; it's an ordinary import statement with no
    917 special semantics or syntax restrictions.
    918 
    919 Code compiled by an :keyword:`exec` statement or calls to the built-in functions
    920 :func:`compile` and :func:`execfile` that occur in a module :mod:`M` containing
    921 a future statement will, by default, use the new  syntax or semantics associated
    922 with the future statement.  This can, starting with Python 2.2 be controlled by
    923 optional arguments to :func:`compile` --- see the documentation of that function
    924 for details.
    925 
    926 A future statement typed at an interactive interpreter prompt will take effect
    927 for the rest of the interpreter session.  If an interpreter is started with the
    928 :option:`-i` option, is passed a script name to execute, and the script includes
    929 a future statement, it will be in effect in the interactive session started
    930 after the script is executed.
    931 
    932 .. seealso::
    933 
    934    :pep:`236` - Back to the __future__
    935       The original proposal for the __future__ mechanism.
    936 
    937 
    938 .. _global:
    939 
    940 The :keyword:`global` statement
    941 ===============================
    942 
    943 .. index::
    944    statement: global
    945    triple: global; name; binding
    946 
    947 .. productionlist::
    948    global_stmt: "global" `identifier` ("," `identifier`)*
    949 
    950 The :keyword:`global` statement is a declaration which holds for the entire
    951 current code block.  It means that the listed identifiers are to be interpreted
    952 as globals.  It would be impossible to assign to a global variable without
    953 :keyword:`global`, although free variables may refer to globals without being
    954 declared global.
    955 
    956 Names listed in a :keyword:`global` statement must not be used in the same code
    957 block textually preceding that :keyword:`global` statement.
    958 
    959 Names listed in a :keyword:`global` statement must not be defined as formal
    960 parameters or in a :keyword:`for` loop control target, :keyword:`class`
    961 definition, function definition, or :keyword:`import` statement.
    962 
    963 .. impl-detail::
    964 
    965    The current implementation does not enforce the latter two restrictions, but
    966    programs should not abuse this freedom, as future implementations may enforce
    967    them or silently change the meaning of the program.
    968 
    969 .. index::
    970    statement: exec
    971    builtin: eval
    972    builtin: execfile
    973    builtin: compile
    974 
    975 **Programmer's note:** the :keyword:`global` is a directive to the parser.  It
    976 applies only to code parsed at the same time as the :keyword:`global` statement.
    977 In particular, a :keyword:`global` statement contained in an :keyword:`exec`
    978 statement does not affect the code block *containing* the :keyword:`exec`
    979 statement, and code contained in an :keyword:`exec` statement is unaffected by
    980 :keyword:`global` statements in the code containing the :keyword:`exec`
    981 statement.  The same applies to the :func:`eval`, :func:`execfile` and
    982 :func:`compile` functions.
    983 
    984 
    985 .. _exec:
    986 
    987 The :keyword:`exec` statement
    988 =============================
    989 
    990 .. index:: statement: exec
    991 
    992 .. productionlist::
    993    exec_stmt: "exec" `or_expr` ["in" `expression` ["," `expression`]]
    994 
    995 This statement supports dynamic execution of Python code.  The first expression
    996 should evaluate to either a Unicode string, a *Latin-1* encoded string, an open
    997 file object, a code object, or a tuple.  If it is a string, the string is parsed
    998 as a suite of Python statements which is then executed (unless a syntax error
    999 occurs). [#]_ If it is an open file, the file is parsed until EOF and executed.
   1000 If it is a code object, it is simply executed.  For the interpretation of a
   1001 tuple, see below.  In all cases, the code that's executed is expected to be
   1002 valid as file input (see section :ref:`file-input`).  Be aware that the
   1003 :keyword:`return` and :keyword:`yield` statements may not be used outside of
   1004 function definitions even within the context of code passed to the
   1005 :keyword:`exec` statement.
   1006 
   1007 In all cases, if the optional parts are omitted, the code is executed in the
   1008 current scope.  If only the first expression after ``in`` is specified,
   1009 it should be a dictionary, which will be used for both the global and the local
   1010 variables.  If two expressions are given, they are used for the global and local
   1011 variables, respectively. If provided, *locals* can be any mapping object.
   1012 Remember that at module level, globals and locals are the same dictionary. If
   1013 two separate objects are given as *globals* and *locals*, the code will be
   1014 executed as if it were embedded in a class definition.
   1015 
   1016 The first expression may also be a tuple of length 2 or 3.  In this case, the
   1017 optional parts must be omitted.  The form ``exec(expr, globals)`` is equivalent
   1018 to ``exec expr in globals``, while the form ``exec(expr, globals, locals)`` is
   1019 equivalent to ``exec expr in globals, locals``.  The tuple form of ``exec``
   1020 provides compatibility with Python 3, where ``exec`` is a function rather than
   1021 a statement.
   1022 
   1023 .. versionchanged:: 2.4
   1024    Formerly, *locals* was required to be a dictionary.
   1025 
   1026 .. index::
   1027    single: __builtins__
   1028    module: __builtin__
   1029 
   1030 As a side effect, an implementation may insert additional keys into the
   1031 dictionaries given besides those corresponding to variable names set by the
   1032 executed code.  For example, the current implementation may add a reference to
   1033 the dictionary of the built-in module :mod:`__builtin__` under the key
   1034 ``__builtins__`` (!).
   1035 
   1036 .. index::
   1037    builtin: eval
   1038    builtin: globals
   1039    builtin: locals
   1040 
   1041 **Programmer's hints:** dynamic evaluation of expressions is supported by the
   1042 built-in function :func:`eval`.  The built-in functions :func:`globals` and
   1043 :func:`locals` return the current global and local dictionary, respectively,
   1044 which may be useful to pass around for use by :keyword:`exec`.
   1045 
   1046 
   1047 .. rubric:: Footnotes
   1048 
   1049 .. [#] Note that the parser only accepts the Unix-style end of line convention.
   1050        If you are reading the code from a file, make sure to use
   1051        :term:`universal newlines` mode to convert Windows or Mac-style newlines.
   1052