• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, which will then be
595attached to the raised exception as the :attr:`__cause__` attribute (which is
596writable).  If the raised exception is not handled, both exceptions will be
597printed::
598
599   >>> try:
600   ...     print(1 / 0)
601   ... except Exception as exc:
602   ...     raise RuntimeError("Something bad happened") from exc
603   ...
604   Traceback (most recent call last):
605     File "<stdin>", line 2, in <module>
606   ZeroDivisionError: division by zero
607
608   The above exception was the direct cause of the following exception:
609
610   Traceback (most recent call last):
611     File "<stdin>", line 4, in <module>
612   RuntimeError: Something bad happened
613
614A similar mechanism works implicitly if an exception is raised inside an
615exception handler or a :keyword:`finally` clause: the previous exception is then
616attached as the new exception's :attr:`__context__` attribute::
617
618   >>> try:
619   ...     print(1 / 0)
620   ... except:
621   ...     raise RuntimeError("Something bad happened")
622   ...
623   Traceback (most recent call last):
624     File "<stdin>", line 2, in <module>
625   ZeroDivisionError: division by zero
626
627   During handling of the above exception, another exception occurred:
628
629   Traceback (most recent call last):
630     File "<stdin>", line 4, in <module>
631   RuntimeError: Something bad happened
632
633Exception chaining can be explicitly suppressed by specifying :const:`None` in
634the ``from`` clause::
635
636   >>> try:
637   ...     print(1 / 0)
638   ... except:
639   ...     raise RuntimeError("Something bad happened") from None
640   ...
641   Traceback (most recent call last):
642     File "<stdin>", line 4, in <module>
643   RuntimeError: Something bad happened
644
645Additional information on exceptions can be found in section :ref:`exceptions`,
646and information about handling exceptions is in section :ref:`try`.
647
648.. versionchanged:: 3.3
649    :const:`None` is now permitted as ``Y`` in ``raise X from Y``.
650
651.. versionadded:: 3.3
652    The ``__suppress_context__`` attribute to suppress automatic display of the
653    exception context.
654
655.. _break:
656
657The :keyword:`!break` statement
658===============================
659
660.. index::
661   ! statement: break
662   statement: for
663   statement: while
664   pair: loop; statement
665
666.. productionlist:: python-grammar
667   break_stmt: "break"
668
669:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
670:keyword:`while` loop, but not nested in a function or class definition within
671that loop.
672
673.. index:: keyword: else
674           pair: loop control; target
675
676It terminates the nearest enclosing loop, skipping the optional :keyword:`!else`
677clause if the loop has one.
678
679If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
680target keeps its current value.
681
682.. index:: keyword: finally
683
684When :keyword:`break` passes control out of a :keyword:`try` statement with a
685:keyword:`finally` clause, that :keyword:`!finally` clause is executed before
686really leaving the loop.
687
688
689.. _continue:
690
691The :keyword:`!continue` statement
692==================================
693
694.. index::
695   ! statement: continue
696   statement: for
697   statement: while
698   pair: loop; statement
699   keyword: finally
700
701.. productionlist:: python-grammar
702   continue_stmt: "continue"
703
704:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
705:keyword:`while` loop, but not nested in a function or class definition within
706that loop.  It continues with the next cycle of the nearest enclosing loop.
707
708When :keyword:`continue` passes control out of a :keyword:`try` statement with a
709:keyword:`finally` clause, that :keyword:`!finally` clause is executed before
710really starting the next loop cycle.
711
712
713.. _import:
714.. _from:
715
716The :keyword:`!import` statement
717================================
718
719.. index::
720   ! statement: import
721   single: module; importing
722   pair: name; binding
723   keyword: from
724   keyword: as
725   exception: ImportError
726   single: , (comma); import statement
727
728.. productionlist:: python-grammar
729   import_stmt: "import" `module` ["as" `identifier`] ("," `module` ["as" `identifier`])*
730              : | "from" `relative_module` "import" `identifier` ["as" `identifier`]
731              : ("," `identifier` ["as" `identifier`])*
732              : | "from" `relative_module` "import" "(" `identifier` ["as" `identifier`]
733              : ("," `identifier` ["as" `identifier`])* [","] ")"
734              : | "from" `module` "import" "*"
735   module: (`identifier` ".")* `identifier`
736   relative_module: "."* `module` | "."+
737
738The basic import statement (no :keyword:`from` clause) is executed in two
739steps:
740
741#. find a module, loading and initializing it if necessary
742#. define a name or names in the local namespace for the scope where
743   the :keyword:`import` statement occurs.
744
745When the statement contains multiple clauses (separated by
746commas) the two steps are carried out separately for each clause, just
747as though the clauses had been separated out into individual import
748statements.
749
750The details of the first step, finding and loading modules are described in
751greater detail in the section on the :ref:`import system <importsystem>`,
752which also describes the various types of packages and modules that can
753be imported, as well as all the hooks that can be used to customize
754the import system. Note that failures in this step may indicate either
755that the module could not be located, *or* that an error occurred while
756initializing the module, which includes execution of the module's code.
757
758If the requested module is retrieved successfully, it will be made
759available in the local namespace in one of three ways:
760
761.. index:: single: as; import statement
762
763* If the module name is followed by :keyword:`!as`, then the name
764  following :keyword:`!as` is bound directly to the imported module.
765* If no other name is specified, and the module being imported is a top
766  level module, the module's name is bound in the local namespace as a
767  reference to the imported module
768* If the module being imported is *not* a top level module, then the name
769  of the top level package that contains the module is bound in the local
770  namespace as a reference to the top level package. The imported module
771  must be accessed using its full qualified name rather than directly
772
773
774.. index::
775   pair: name; binding
776   single: from; import statement
777
778The :keyword:`from` form uses a slightly more complex process:
779
780#. find the module specified in the :keyword:`from` clause, loading and
781   initializing it if necessary;
782#. for each of the identifiers specified in the :keyword:`import` clauses:
783
784   #. check if the imported module has an attribute by that name
785   #. if not, attempt to import a submodule with that name and then
786      check the imported module again for that attribute
787   #. if the attribute is not found, :exc:`ImportError` is raised.
788   #. otherwise, a reference to that value is stored in the local namespace,
789      using the name in the :keyword:`!as` clause if it is present,
790      otherwise using the attribute name
791
792Examples::
793
794   import foo                 # foo imported and bound locally
795   import foo.bar.baz         # foo.bar.baz imported, foo bound locally
796   import foo.bar.baz as fbb  # foo.bar.baz imported and bound as fbb
797   from foo.bar import baz    # foo.bar.baz imported and bound as baz
798   from foo import attr       # foo imported and foo.attr bound as attr
799
800.. index:: single: * (asterisk); import statement
801
802If the list of identifiers is replaced by a star (``'*'``), all public
803names defined in the module are bound in the local namespace for the scope
804where the :keyword:`import` statement occurs.
805
806.. index:: single: __all__ (optional module attribute)
807
808The *public names* defined by a module are determined by checking the module's
809namespace for a variable named ``__all__``; if defined, it must be a sequence
810of strings which are names defined or imported by that module.  The names
811given in ``__all__`` are all considered public and are required to exist.  If
812``__all__`` is not defined, the set of public names includes all names found
813in the module's namespace which do not begin with an underscore character
814(``'_'``).  ``__all__`` should contain the entire public API. It is intended
815to avoid accidentally exporting items that are not part of the API (such as
816library modules which were imported and used within the module).
817
818The wild card form of import --- ``from module import *`` --- is only allowed at
819the module level.  Attempting to use it in class or function definitions will
820raise a :exc:`SyntaxError`.
821
822.. index::
823    single: relative; import
824
825When specifying what module to import you do not have to specify the absolute
826name of the module. When a module or package is contained within another
827package it is possible to make a relative import within the same top package
828without having to mention the package name. By using leading dots in the
829specified module or package after :keyword:`from` you can specify how high to
830traverse up the current package hierarchy without specifying exact names. One
831leading dot means the current package where the module making the import
832exists. Two dots means up one package level. Three dots is up two levels, etc.
833So if you execute ``from . import mod`` from a module in the ``pkg`` package
834then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
835import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
836The specification for relative imports is contained in
837the :ref:`relativeimports` section.
838
839:func:`importlib.import_module` is provided to support applications that
840determine dynamically the modules to be loaded.
841
842.. audit-event:: import module,filename,sys.path,sys.meta_path,sys.path_hooks import
843
844.. _future:
845
846Future statements
847-----------------
848
849.. index::
850   pair: future; statement
851   single: __future__; future statement
852
853A :dfn:`future statement` is a directive to the compiler that a particular
854module should be compiled using syntax or semantics that will be available in a
855specified future release of Python where the feature becomes standard.
856
857The future statement is intended to ease migration to future versions of Python
858that introduce incompatible changes to the language.  It allows use of the new
859features on a per-module basis before the release in which the feature becomes
860standard.
861
862.. productionlist:: python-grammar
863   future_stmt: "from" "__future__" "import" `feature` ["as" `identifier`]
864              : ("," `feature` ["as" `identifier`])*
865              : | "from" "__future__" "import" "(" `feature` ["as" `identifier`]
866              : ("," `feature` ["as" `identifier`])* [","] ")"
867   feature: `identifier`
868
869A future statement must appear near the top of the module.  The only lines that
870can appear before a future statement are:
871
872* the module docstring (if any),
873* comments,
874* blank lines, and
875* other future statements.
876
877The only feature that requires using the future statement is
878``annotations`` (see :pep:`563`).
879
880All historical features enabled by the future statement are still recognized
881by Python 3.  The list includes ``absolute_import``, ``division``,
882``generators``, ``generator_stop``, ``unicode_literals``,
883``print_function``, ``nested_scopes`` and ``with_statement``.  They are
884all redundant because they are always enabled, and only kept for
885backwards compatibility.
886
887A future statement is recognized and treated specially at compile time: Changes
888to the semantics of core constructs are often implemented by generating
889different code.  It may even be the case that a new feature introduces new
890incompatible syntax (such as a new reserved word), in which case the compiler
891may need to parse the module differently.  Such decisions cannot be pushed off
892until runtime.
893
894For any given release, the compiler knows which feature names have been defined,
895and raises a compile-time error if a future statement contains a feature not
896known to it.
897
898The direct runtime semantics are the same as for any import statement: there is
899a standard module :mod:`__future__`, described later, and it will be imported in
900the usual way at the time the future statement is executed.
901
902The interesting runtime semantics depend on the specific feature enabled by the
903future statement.
904
905Note that there is nothing special about the statement::
906
907   import __future__ [as name]
908
909That is not a future statement; it's an ordinary import statement with no
910special semantics or syntax restrictions.
911
912Code compiled by calls to the built-in functions :func:`exec` and :func:`compile`
913that occur in a module :mod:`M` containing a future statement will, by default,
914use the new syntax or semantics associated with the future statement.  This can
915be controlled by optional arguments to :func:`compile` --- see the documentation
916of that function for details.
917
918A future statement typed at an interactive interpreter prompt will take effect
919for the rest of the interpreter session.  If an interpreter is started with the
920:option:`-i` option, is passed a script name to execute, and the script includes
921a future statement, it will be in effect in the interactive session started
922after the script is executed.
923
924.. seealso::
925
926   :pep:`236` - Back to the __future__
927      The original proposal for the __future__ mechanism.
928
929
930.. _global:
931
932The :keyword:`!global` statement
933================================
934
935.. index::
936   ! statement: global
937   triple: global; name; binding
938   single: , (comma); identifier list
939
940.. productionlist:: python-grammar
941   global_stmt: "global" `identifier` ("," `identifier`)*
942
943The :keyword:`global` statement is a declaration which holds for the entire
944current code block.  It means that the listed identifiers are to be interpreted
945as globals.  It would be impossible to assign to a global variable without
946:keyword:`!global`, although free variables may refer to globals without being
947declared global.
948
949Names listed in a :keyword:`global` statement must not be used in the same code
950block textually preceding that :keyword:`!global` statement.
951
952Names listed in a :keyword:`global` statement must not be defined as formal
953parameters or in a :keyword:`for` loop control target, :keyword:`class`
954definition, function definition, :keyword:`import` statement, or variable
955annotation.
956
957.. impl-detail::
958
959   The current implementation does not enforce some of these restrictions, but
960   programs should not abuse this freedom, as future implementations may enforce
961   them or silently change the meaning of the program.
962
963.. index::
964   builtin: exec
965   builtin: eval
966   builtin: compile
967
968**Programmer's note:** :keyword:`global` is a directive to the parser.  It
969applies only to code parsed at the same time as the :keyword:`!global` statement.
970In particular, a :keyword:`!global` statement contained in a string or code
971object supplied to the built-in :func:`exec` function does not affect the code
972block *containing* the function call, and code contained in such a string is
973unaffected by :keyword:`!global` statements in the code containing the function
974call.  The same applies to the :func:`eval` and :func:`compile` functions.
975
976
977.. _nonlocal:
978
979The :keyword:`!nonlocal` statement
980==================================
981
982.. index:: statement: nonlocal
983   single: , (comma); identifier list
984
985.. productionlist:: python-grammar
986   nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*
987
988.. XXX add when implemented
989                : ["=" (`target_list` "=")+ starred_expression]
990                : | "nonlocal" identifier augop expression_list
991
992The :keyword:`nonlocal` statement causes the listed identifiers to refer to
993previously bound variables in the nearest enclosing scope excluding globals.
994This is important because the default behavior for binding is to search the
995local namespace first.  The statement allows encapsulated code to rebind
996variables outside of the local scope besides the global (module) scope.
997
998.. XXX not implemented
999   The :keyword:`nonlocal` statement may prepend an assignment or augmented
1000   assignment, but not an expression.
1001
1002Names listed in a :keyword:`nonlocal` statement, unlike those listed in a
1003:keyword:`global` statement, must refer to pre-existing bindings in an
1004enclosing scope (the scope in which a new binding should be created cannot
1005be determined unambiguously).
1006
1007Names listed in a :keyword:`nonlocal` statement must not collide with
1008pre-existing bindings in the local scope.
1009
1010.. seealso::
1011
1012   :pep:`3104` - Access to Names in Outer Scopes
1013      The specification for the :keyword:`nonlocal` statement.
1014