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