simple_stmts.rst 33.9 KB
Newer Older
1 2 3 4 5 6 7 8 9

.. _simple:

*****************
Simple statements
*****************

.. index:: pair: simple; statement

10
A simple statement is comprised within a single logical line. Several simple
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
statements may occur on a single line separated by semicolons.  The syntax for
simple statements is:

.. productionlist::
   simple_stmt: `expression_stmt`
              : | `assert_stmt`
              : | `assignment_stmt`
              : | `augmented_assignment_stmt`
              : | `pass_stmt`
              : | `del_stmt`
              : | `return_stmt`
              : | `yield_stmt`
              : | `raise_stmt`
              : | `break_stmt`
              : | `continue_stmt`
              : | `import_stmt`
              : | `global_stmt`
28
              : | `nonlocal_stmt`
29 30 31 32 33 34 35


.. _exprstmts:

Expression statements
=====================

36 37 38
.. index::
   pair: expression; statement
   pair: expression; list
39
.. index:: pair: expression; list
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

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 ``None``).  Other uses of
expression statements are allowed and occasionally useful.  The syntax for an
expression statement is:

.. productionlist::
   expression_stmt: `expression_list`

An expression statement evaluates the expression list (which may be a single
expression).

.. index::
   builtin: repr
   object: None
   pair: string; conversion
   single: output
   pair: standard; output
   pair: writing; values
   pair: procedure; call

In interactive mode, if the value is not ``None``, it is converted to a string
using the built-in :func:`repr` function and the resulting string is written to
64 65
standard output on a line by itself (except if the result is ``None``, so that
procedure calls do not cause any output.)
66 67 68 69 70 71 72

.. _assignment:

Assignment statements
=====================

.. index::
73
   single: =; assignment statement
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
   pair: assignment; statement
   pair: binding; name
   pair: rebinding; name
   object: mutable
   pair: attribute; assignment

Assignment statements are used to (re)bind names to values and to modify
attributes or items of mutable objects:

.. productionlist::
   assignment_stmt: (`target_list` "=")+ (`expression_list` | `yield_expression`)
   target_list: `target` ("," `target`)* [","]
   target: `identifier`
         : | "(" `target_list` ")"
         : | "[" `target_list` "]"
         : | `attributeref`
         : | `subscription`
         : | `slicing`
92
         : | "*" `target`
93

94 95
(See section :ref:`primaries` for the syntax definitions for *attributeref*,
*subscription*, and *slicing*.)
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

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.

.. index::
   single: target
   pair: target; 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:: triple: target; list; assignment

115 116
Assignment of an object to a target list, optionally enclosed in parentheses or
square brackets, is recursively defined as follows.
117 118 119

* If the target list is a single target: The object is assigned to that target.

Benjamin Peterson's avatar
Benjamin Peterson committed
120 121 122
* If the target list is a comma-separated list of targets: The object must be an
  iterable with the same number of items as there are targets in the target list,
  and the items are assigned, from left to right, to the corresponding targets.
123

124 125 126 127 128 129 130
  * If the target list contains one target prefixed with an asterisk, called a
    "starred" target: The object must be a sequence with at least as many items
    as there are targets in the target list, minus one.  The first items of the
    sequence are assigned, from left to right, to the targets before the starred
    target.  The final items of the sequence are assigned to the targets after
    the starred target.  A list of the remaining items in the sequence is then
    assigned to the starred target (the list can be empty).
131

132 133 134
  * Else: The object must be a sequence with the same number of items as there
    are targets in the target list, and the items are assigned, from left to
    right, to the corresponding targets.
135

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

138
* If the target is an identifier (name):
139

140 141 142
  * If the name does not occur in a :keyword:`global` or :keyword:`nonlocal`
    statement in the current code block: the name is bound to the object in the
    current local namespace.
143

144 145
  * Otherwise: the name is bound to the object in the global namespace or the
    outer namespace determined by :keyword:`nonlocal`, respectively.
146

147 148
  .. index:: single: destructor

149 150 151
  The name is rebound if it was already bound.  This may cause the reference
  count for the object previously bound to the name to reach zero, causing the
  object to be deallocated and its destructor (if it has one) to be called.
152

153
* If the target is a target list enclosed in parentheses or in square brackets:
Benjamin Peterson's avatar
Benjamin Peterson committed
154 155 156
  The object must be an iterable with the same number of items as there are
  targets in the target list, and its items are assigned, from left to right,
  to the corresponding targets.
157 158 159

  .. index:: pair: attribute; assignment

160 161
* If the target is an attribute reference: The primary expression in the
  reference is evaluated.  It should yield an object with assignable attributes;
162 163 164
  if this is not the case, :exc:`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
165 166
  :exc:`AttributeError`).

167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
  .. _attr-target-note:

  Note: If the object is a class instance and the attribute reference occurs on
  both sides of the assignment operator, the RHS expression, ``a.x`` can access
  either an instance attribute or (if no instance attribute exists) a class
  attribute.  The LHS target ``a.x`` is always set as an instance attribute,
  creating it if necessary.  Thus, the two occurrences of ``a.x`` do not
  necessarily refer to the same attribute: if the RHS expression refers to a
  class attribute, the LHS creates a new instance attribute as the target of the
  assignment::

     class Cls:
         x = 3             # class variable
     inst = Cls()
     inst.x = inst.x + 1   # writes inst.x as 4 leaving Cls.x as 3

  This description does not necessarily apply to descriptor attributes, such as
  properties created with :func:`property`.

186 187 188 189 190
  .. index::
     pair: subscription; assignment
     object: mutable

* If the target is a subscription: The primary expression in the reference is
191 192
  evaluated.  It should yield either a mutable sequence object (such as a list)
  or a mapping object (such as a dictionary).  Next, the subscript expression is
193 194 195 196 197 198
  evaluated.

  .. index::
     object: sequence
     object: list

199 200 201 202 203 204
  If the primary is a mutable sequence object (such as a list), the subscript
  must yield an 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, :exc:`IndexError` is
  raised (assignment to a subscripted sequence cannot add new items to a list).
205 206 207 208 209 210 211 212 213 214 215

  .. index::
     object: mapping
     object: dictionary

  If the primary is a mapping object (such as a dictionary), 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).

216 217 218
  For user-defined objects, the :meth:`__setitem__` method is called with
  appropriate arguments.

219 220 221 222 223 224
  .. index:: pair: slicing; assignment

* If the target is a slicing: The primary expression in the reference is
  evaluated.  It should yield a mutable sequence object (such as 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
225 226 227 228 229 230
  are zero and the sequence's length.  The bounds should evaluate to 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
231
  target sequence, if the target sequence allows it.
232

Georg Brandl's avatar
Georg Brandl committed
233 234 235 236 237
.. impl-detail::

   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.
238

239 240 241 242 243
Although the definition of assignment implies that overlaps between the
left-hand side and the right-hand side are 'simultanenous' (for example ``a, b =
b, a`` swaps two variables), overlaps *within* the collection of assigned-to
variables occur left-to-right, sometimes resulting in confusion.  For instance,
the following program prints ``[0, 2]``::
244 245 246

   x = [0, 1]
   i = 0
247
   i, x[i] = 1, 2         # i is updated, then x[i] is updated
248
   print(x)
249 250


251 252 253 254 255 256
.. seealso::

   :pep:`3132` - Extended Iterable Unpacking
      The specification for the ``*target`` feature.


257 258 259 260 261 262 263 264
.. _augassign:

Augmented assignment statements
-------------------------------

.. index::
   pair: augmented; assignment
   single: statement; assignment, augmented
265 266 267 268 269 270 271 272 273 274 275 276
   single: +=; augmented assignment
   single: -=; augmented assignment
   single: *=; augmented assignment
   single: /=; augmented assignment
   single: %=; augmented assignment
   single: &=; augmented assignment
   single: ^=; augmented assignment
   single: |=; augmented assignment
   single: **=; augmented assignment
   single: //=; augmented assignment
   single: >>=; augmented assignment
   single: <<=; augmented assignment
277 278 279 280 281

Augmented assignment is the combination, in a single statement, of a binary
operation and an assignment statement:

.. productionlist::
282 283
   augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
   augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Benjamin Peterson's avatar
Benjamin Peterson committed
284
   augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
285 286
        : | ">>=" | "<<=" | "&=" | "^=" | "|="

287
(See section :ref:`primaries` for the syntax definitions of the last three
288 289 290 291 292 293 294 295 296 297 298 299 300
symbols.)

An augmented assignment evaluates the target (which, unlike normal assignment
statements, cannot be an unpacking) and the expression list, performs the binary
operation specific to the type of assignment on the two operands, and assigns
the result to the original target.  The target is only evaluated once.

An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
1`` to achieve a similar, but not exactly equal effect. In the augmented
version, ``x`` is only evaluated once. Also, when possible, the actual operation
is performed *in-place*, meaning that rather than creating a new object and
assigning that to the target, the old object is modified instead.

301 302 303 304 305
Unlike normal assignments, augmented assignments evaluate the left-hand side
*before* evaluating the right-hand side.  For example, ``a[i] += f(x)`` first
looks-up ``a[i]``, then it evaluates ``f(x)`` and performs the addition, and
lastly, it writes the result back to ``a[i]``.

306 307 308 309 310 311
With the exception of assigning to tuples and multiple targets in a single
statement, the assignment done by augmented assignment statements is handled the
same way as normal assignments. Similarly, with the exception of the possible
*in-place* behavior, the binary operation performed by augmented assignment is
the same as the normal binary operations.

312 313
For targets which are attribute references, the same :ref:`caveat about class
and instance attributes <attr-target-note>` applies as for regular assignments.
314 315


316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
.. _assert:

The :keyword:`assert` statement
===============================

.. index::
   statement: assert
   pair: debugging; assertions

Assert statements are a convenient way to insert debugging assertions into a
program:

.. productionlist::
   assert_stmt: "assert" `expression` ["," `expression`]

The simple form, ``assert expression``, is equivalent to ::

   if __debug__:
      if not expression: raise AssertionError

The extended form, ``assert expression1, expression2``, is equivalent to ::

   if __debug__:
Georg Brandl's avatar
Georg Brandl committed
339
      if not expression1: raise AssertionError(expression2)
340 341 342 343 344

.. index::
   single: __debug__
   exception: AssertionError

345
These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
346
the built-in variables with those names.  In the current implementation, the
347
built-in variable :const:`__debug__` is ``True`` under normal circumstances,
348 349 350 351 352 353
``False`` when optimization is requested (command line option -O).  The current
code generator emits no code for an assert statement when optimization is
requested at compile time.  Note that it is unnecessary to include the source
code for the expression that failed in the error message; it will be displayed
as part of the stack trace.

354
Assignments to :const:`__debug__` are illegal.  The value for the built-in variable
355 356 357
is determined when the interpreter starts.


358 359 360 361 362
.. _pass:

The :keyword:`pass` statement
=============================

363 364 365
.. index::
   statement: pass
   pair: null; operation
366
           pair: null; operation
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384

.. productionlist::
   pass_stmt: "pass"

:keyword:`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::

   def f(arg): pass    # a function that does nothing (yet)

   class C: pass       # a class with no methods (yet)


.. _del:

The :keyword:`del` statement
============================

385 386 387 388
.. index::
   statement: del
   pair: deletion; target
   triple: deletion; target; list
389 390 391 392 393

.. productionlist::
   del_stmt: "del" `target_list`

Deletion is recursively defined very similar to the way assignment is defined.
394
Rather than spelling it out in full details, here are some hints.
395 396 397 398 399 400 401

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

.. index::
   statement: global
   pair: unbinding; name

402
Deletion of a name removes the binding of that name from the local or global
403 404 405 406 407 408 409 410 411 412 413
namespace, depending on whether the name occurs in a :keyword:`global` statement
in the same code block.  If the name is unbound, a :exc:`NameError` exception
will be raised.

.. index:: pair: attribute; deletion

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).

414 415 416 417
.. versionchanged:: 3.2
   Previously it was illegal to delete a name from the local namespace if it
   occurs as a free variable in a nested block.

418 419 420 421 422 423

.. _return:

The :keyword:`return` statement
===============================

424 425 426 427
.. index::
   statement: return
   pair: function; definition
   pair: class; definition
428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445

.. productionlist::
   return_stmt: "return" [`expression_list`]

:keyword:`return` may only occur syntactically nested in a function definition,
not within a nested class definition.

If an expression list is present, it is evaluated, else ``None`` is substituted.

:keyword:`return` leaves the current function call with the expression list (or
``None``) as return value.

.. index:: keyword: finally

When :keyword:`return` passes control out of a :keyword:`try` statement with a
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
really leaving the function.

446 447 448 449
In a generator function, the :keyword:`return` statement indicates that the
generator is done and will cause :exc:`StopIteration` to be raised. The returned
value (if any) is used as an argument to construct :exc:`StopIteration` and
becomes the :attr:`StopIteration.value` attribute.
450 451 452 453 454 455 456


.. _yield:

The :keyword:`yield` statement
==============================

457 458 459 460 461 462 463
.. index::
   statement: yield
   single: generator; function
   single: generator; iterator
   single: function; generator
   exception: StopIteration

464 465 466
.. productionlist::
   yield_stmt: `yield_expression`

467 468 469 470
A :keyword:`yield` statement is semantically equivalent to a :ref:`yield
expression <yieldexpr>`. The yield statement can be used to omit the parentheses
that would otherwise be required in the equivalent yield expression
statement. For example, the yield statements ::
471

472 473
  yield <expr>
  yield from <expr>
Christian Heimes's avatar
Christian Heimes committed
474

475
are equivalent to the yield expression statements ::
Christian Heimes's avatar
Christian Heimes committed
476

477 478
  (yield <expr>)
  (yield from <expr>)
479

480 481 482 483
Yield expressions and statements are only used when defining a :term:`generator`
function, and are only used in the body of the generator function.  Using yield
in a function definition is sufficient to cause that definition to create a
generator function instead of a normal function.
Christian Heimes's avatar
Christian Heimes committed
484

485 486
For full details of :keyword:`yield` semantics, refer to the
:ref:`yieldexpr` section.
487 488 489 490 491 492

.. _raise:

The :keyword:`raise` statement
==============================

493 494 495 496
.. index::
   statement: raise
   single: exception
   pair: raising; exception
497
   single: __traceback__ (exception attribute)
498 499

.. productionlist::
500
   raise_stmt: "raise" [`expression` ["from" `expression`]]
501 502 503

If no expressions are present, :keyword:`raise` re-raises the last exception
that was active in the current scope.  If no exception is active in the current
504 505
scope, a :exc:`RuntimeError` exception is raised indicating that this is an
error.
506

507 508 509 510
Otherwise, :keyword:`raise` evaluates the first expression as the exception
object.  It must be either a subclass or an instance of :class:`BaseException`.
If it is a class, the exception instance will be obtained when needed by
instantiating the class with no arguments.
511

512 513
The :dfn:`type` of the exception is the exception instance's class, the
:dfn:`value` is the instance itself.
514 515 516

.. index:: object: traceback

517
A traceback object is normally created automatically when an exception is raised
518 519 520 521
and attached to it as the :attr:`__traceback__` attribute, which is writable.
You can create an exception and set your own traceback in one step using the
:meth:`with_traceback` exception method (which returns the same exception
instance, with its traceback set to its argument), like so::
522

523
   raise Exception("foo occurred").with_traceback(tracebackobj)
524

525 526 527
.. index:: pair: exception; chaining
           __cause__ (exception attribute)
           __context__ (exception attribute)
528

529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550
The ``from`` clause is used for exception chaining: if given, the second
*expression* must be another exception class or instance, which will then be
attached to the raised exception as the :attr:`__cause__` attribute (which is
writable).  If the raised exception is not handled, both exceptions will be
printed::

   >>> try:
   ...     print(1 / 0)
   ... except Exception as exc:
   ...     raise RuntimeError("Something bad happened") from exc
   ...
   Traceback (most recent call last):
     File "<stdin>", line 2, in <module>
   ZeroDivisionError: int division or modulo by zero

   The above exception was the direct cause of the following exception:

   Traceback (most recent call last):
     File "<stdin>", line 4, in <module>
   RuntimeError: Something bad happened

A similar mechanism works implicitly if an exception is raised inside an
551 552
exception handler or a :keyword:`finally` clause: the previous exception is then
attached as the new exception's :attr:`__context__` attribute::
553 554 555 556 557 558 559 560 561 562 563 564 565 566 567

   >>> try:
   ...     print(1 / 0)
   ... except:
   ...     raise RuntimeError("Something bad happened")
   ...
   Traceback (most recent call last):
     File "<stdin>", line 2, in <module>
   ZeroDivisionError: int division or modulo by zero

   During handling of the above exception, another exception occurred:

   Traceback (most recent call last):
     File "<stdin>", line 4, in <module>
   RuntimeError: Something bad happened
568 569 570 571 572 573 574 575 576 577

Additional information on exceptions can be found in section :ref:`exceptions`,
and information about handling exceptions is in section :ref:`try`.


.. _break:

The :keyword:`break` statement
==============================

578 579 580 581 582
.. index::
   statement: break
   statement: for
   statement: while
   pair: loop; statement
583 584 585 586 587 588 589 590 591

.. productionlist::
   break_stmt: "break"

:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
:keyword:`while` loop, but not nested in a function or class definition within
that loop.

.. index:: keyword: else
592
           pair: loop control; target
593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611

It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
clause if the loop has one.

If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
target keeps its current value.

.. index:: keyword: finally

When :keyword:`break` passes control out of a :keyword:`try` statement with a
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
really leaving the loop.


.. _continue:

The :keyword:`continue` statement
=================================

612 613 614 615 616 617
.. index::
   statement: continue
   statement: for
   statement: while
   pair: loop; statement
   keyword: finally
618 619 620 621 622 623

.. productionlist::
   continue_stmt: "continue"

:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
:keyword:`while` loop, but not nested in a function or class definition or
Christian Heimes's avatar
Christian Heimes committed
624
:keyword:`finally` clause within that loop.  It continues with the next
625 626
cycle of the nearest enclosing loop.

Christian Heimes's avatar
Christian Heimes committed
627 628 629 630
When :keyword:`continue` passes control out of a :keyword:`try` statement with a
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
really starting the next loop cycle.

631 632

.. _import:
633
.. _from:
634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654

The :keyword:`import` statement
===============================

.. index::
   statement: import
   single: module; importing
   pair: name; binding
   keyword: from

.. productionlist::
   import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
              : | "from" `relative_module` "import" `identifier` ["as" `name`]
              : ( "," `identifier` ["as" `name`] )*
              : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
              : ( "," `identifier` ["as" `name`] )* [","] ")"
              : | "from" `module` "import" "*"
   module: (`identifier` ".")* `identifier`
   relative_module: "."* `module` | "."+
   name: `identifier`

655 656 657 658 659 660 661 662 663 664 665 666
The basic import statement (no :keyword:`from` clause) is executed in two
steps:

#. find a module, loading and initializing it if necessary
#. define a name or names in the local namespace for the scope where
   the :keyword:`import` statement occurs.

When the statement contains multiple clauses (separated by
commas) the two steps are carried out separately for each clause, just
as though the clauses had been separated out into individiual import
statements.

667
The details of the first step, finding and loading modules are described in
668 669 670 671 672 673 674 675 676 677
greater detail in the section on the :ref:`import system <importsystem>`,
which also describes the various types of packages and modules that can
be imported, as well as all the hooks that can be used to customize
the import system. Note that failures in this step may indicate either
that the module could not be located, *or* that an error occurred while
initializing the module, which includes execution of the module's code.

If the requested module is retrieved successfully, it will be made
available in the local namespace in one of three ways:

678 679
.. index:: single: as; import statement

680 681 682 683 684 685 686 687 688
* If the module name is followed by :keyword:`as`, then the name
  following :keyword:`as` is bound directly to the imported module.
* If no other name is specified, and the module being imported is a top
  level module, the module's name is bound in the local namespace as a
  reference to the imported module
* If the module being imported is *not* a top level module, then the name
  of the top level package that contains the module is bound in the local
  namespace as a reference to the top level package. The imported module
  must be accessed using its full qualified name rather than directly
689

690 691 692

.. index::
   pair: name; binding
693
   keyword: from
694 695
   exception: ImportError

696 697
The :keyword:`from` form uses a slightly more complex process:

698
#. find the module specified in the :keyword:`from` clause, loading and
699 700 701 702 703 704 705
   initializing it if necessary;
#. for each of the identifiers specified in the :keyword:`import` clauses:

   #. check if the imported module has an attribute by that name
   #. if not, attempt to import a submodule with that name and then
      check the imported module again for that attribute
   #. if the attribute is not found, :exc:`ImportError` is raised.
706
   #. otherwise, a reference to that value is stored in the local namespace,
707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726
      using the name in the :keyword:`as` clause if it is present,
      otherwise using the attribute name

Examples::

   import foo                 # foo imported and bound locally
   import foo.bar.baz         # foo.bar.baz imported, foo bound locally
   import foo.bar.baz as fbb  # foo.bar.baz imported and bound as fbb
   from foo.bar import baz    # foo.bar.baz imported and bound as baz
   from foo import attr       # foo imported and foo.attr bound as attr

If the list of identifiers is replaced by a star (``'*'``), all public
names defined in the module are bound in the local namespace for the scope
where the :keyword:`import` statement occurs.

.. index:: single: __all__ (optional module attribute)

The *public names* defined by a module are determined by checking the module's
namespace for a variable named ``__all__``; if defined, it must be a sequence
of strings which are names defined or imported by that module.  The names
727 728 729 730 731 732
given in ``__all__`` are all considered public and are required to exist.  If
``__all__`` is not defined, the set of public names includes all names found
in the module's namespace which do not begin with an underscore character
(``'_'``).  ``__all__`` should contain the entire public API. It is intended
to avoid accidentally exporting items that are not part of the API (such as
library modules which were imported and used within the module).
733

734 735 736
The wild card form of import --- ``from module import *`` --- is only allowed at
the module level.  Attempting to use it in class or function definitions will
raise a :exc:`SyntaxError`.
737 738

.. index::
739 740 741 742 743 744 745 746 747 748 749 750
    single: relative; import

When specifying what module to import you do not have to specify the absolute
name of the module. When a module or package is contained within another
package it is possible to make a relative import within the same top package
without having to mention the package name. By using leading dots in the
specified module or package after :keyword:`from` you can specify how high to
traverse up the current package hierarchy without specifying exact names. One
leading dot means the current package where the module making the import
exists. Two dots means up one package level. Three dots is up two levels, etc.
So if you execute ``from . import mod`` from a module in the ``pkg`` package
then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
Florent Xicluna's avatar
Florent Xicluna committed
751
import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
752 753
The specification for relative imports is contained within :pep:`328`.

Benjamin Peterson's avatar
Benjamin Peterson committed
754
:func:`importlib.import_module` is provided to support applications that
755
determine dynamically the modules to be loaded.
756 757 758 759 760 761 762 763 764 765 766


.. _future:

Future statements
-----------------

.. index:: pair: future; statement

A :dfn:`future statement` is a directive to the compiler that a particular
module should be compiled using syntax or semantics that will be available in a
767 768 769 770 771 772
specified future release of Python where the feature becomes standard.

The future statement is intended to ease migration to future versions of Python
that introduce incompatible changes to the language.  It allows use of the new
features on a per-module basis before the release in which the feature becomes
standard.
773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789

.. productionlist:: *
   future_statement: "from" "__future__" "import" feature ["as" name]
                   : ("," feature ["as" name])*
                   : | "from" "__future__" "import" "(" feature ["as" name]
                   : ("," feature ["as" name])* [","] ")"
   feature: identifier
   name: identifier

A future statement must appear near the top of the module.  The only lines that
can appear before a future statement are:

* the module docstring (if any),
* comments,
* blank lines, and
* other future statements.

790 791 792
.. XXX change this if future is cleaned out

The features recognized by Python 3.0 are ``absolute_import``, ``division``,
Benjamin Peterson's avatar
Benjamin Peterson committed
793 794 795
``generators``, ``unicode_literals``, ``print_function``, ``nested_scopes`` and
``with_statement``.  They are all redundant because they are always enabled, and
only kept for backwards compatibility.
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821

A future statement is recognized and treated specially at compile time: Changes
to the semantics of core constructs are often implemented by generating
different code.  It may even be the case that a new feature introduces new
incompatible syntax (such as a new reserved word), in which case the compiler
may need to parse the module differently.  Such decisions cannot be pushed off
until runtime.

For any given release, the compiler knows which feature names have been defined,
and raises a compile-time error if a future statement contains a feature not
known to it.

The direct runtime semantics are the same as for any import statement: there is
a standard module :mod:`__future__`, described later, and it will be imported in
the usual way at the time the future statement is executed.

The interesting runtime semantics depend on the specific feature enabled by the
future statement.

Note that there is nothing special about the statement::

   import __future__ [as name]

That is not a future statement; it's an ordinary import statement with no
special semantics or syntax restrictions.

822
Code compiled by calls to the built-in functions :func:`exec` and :func:`compile`
823 824 825 826
that occur in a module :mod:`M` containing a future statement will, by default,
use the new syntax or semantics associated with the future statement.  This can
be controlled by optional arguments to :func:`compile` --- see the documentation
of that function for details.
827 828 829 830 831 832 833

A future statement typed at an interactive interpreter prompt will take effect
for the rest of the interpreter session.  If an interpreter is started with the
:option:`-i` option, is passed a script name to execute, and the script includes
a future statement, it will be in effect in the interactive session started
after the script is executed.

834 835 836 837 838
.. seealso::

   :pep:`236` - Back to the __future__
      The original proposal for the __future__ mechanism.

839 840 841 842 843 844

.. _global:

The :keyword:`global` statement
===============================

845 846 847
.. index::
   statement: global
   triple: global; name; binding
848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864

.. productionlist::
   global_stmt: "global" `identifier` ("," `identifier`)*

The :keyword:`global` statement is a declaration which holds for the entire
current code block.  It means that the listed identifiers are to be interpreted
as globals.  It would be impossible to assign to a global variable without
:keyword:`global`, although free variables may refer to globals without being
declared global.

Names listed in a :keyword:`global` statement must not be used in the same code
block textually preceding that :keyword:`global` statement.

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

Georg Brandl's avatar
Georg Brandl committed
865 866
.. impl-detail::

867
   The current implementation does not enforce the two restrictions, but
Georg Brandl's avatar
Georg Brandl committed
868 869
   programs should not abuse this freedom, as future implementations may enforce
   them or silently change the meaning of the program.
870 871 872 873 874 875 876 877 878

.. index::
   builtin: exec
   builtin: eval
   builtin: compile

**Programmer's note:** the :keyword:`global` is a directive to the parser.  It
applies only to code parsed at the same time as the :keyword:`global` statement.
In particular, a :keyword:`global` statement contained in a string or code
879
object supplied to the built-in :func:`exec` function does not affect the code
880 881 882 883
block *containing* the function call, and code contained in such a string is
unaffected by :keyword:`global` statements in the code containing the function
call.  The same applies to the :func:`eval` and :func:`compile` functions.

884 885 886 887 888 889 890 891 892 893 894

.. _nonlocal:

The :keyword:`nonlocal` statement
=================================

.. index:: statement: nonlocal

.. productionlist::
   nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*

895
.. XXX add when implemented
896 897
                : ["=" (`target_list` "=")+ expression_list]
                : | "nonlocal" identifier augop expression_list
898

899
The :keyword:`nonlocal` statement causes the listed identifiers to refer to
900 901 902 903
previously bound variables in the nearest enclosing scope excluding globals.
This is important because the default behavior for binding is to search the
local namespace first.  The statement allows encapsulated code to rebind
variables outside of the local scope besides the global (module) scope.
904 905 906 907 908

.. XXX not implemented
   The :keyword:`nonlocal` statement may prepend an assignment or augmented
   assignment, but not an expression.

909
Names listed in a :keyword:`nonlocal` statement, unlike those listed in a
910 911 912 913
:keyword:`global` statement, must refer to pre-existing bindings in an
enclosing scope (the scope in which a new binding should be created cannot
be determined unambiguously).

914
Names listed in a :keyword:`nonlocal` statement must not collide with
915 916 917 918 919 920
pre-existing bindings in the local scope.

.. seealso::

   :pep:`3104` - Access to Names in Outer Scopes
      The specification for the :keyword:`nonlocal` statement.