blob: 9c0430da1fb2a4a9d2127bb0468f5f7a485afc91 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2.. _simple:
3
4*****************
5Simple statements
6*****************
7
8.. index:: pair: simple; statement
9
Raymond Hettingeraa7886d2014-05-26 22:20:37 -070010A simple statement is comprised within a single logical line. Several simple
Georg Brandl116aa622007-08-15 14:28:22 +000011statements may occur on a single line separated by semicolons. The syntax for
12simple statements is:
13
14.. productionlist::
15 simple_stmt: `expression_stmt`
16 : | `assert_stmt`
17 : | `assignment_stmt`
18 : | `augmented_assignment_stmt`
Yury Selivanovf8cb8a12016-09-08 20:50:03 -070019 : | `annotated_assignment_stmt`
Georg Brandl116aa622007-08-15 14:28:22 +000020 : | `pass_stmt`
21 : | `del_stmt`
22 : | `return_stmt`
23 : | `yield_stmt`
24 : | `raise_stmt`
25 : | `break_stmt`
26 : | `continue_stmt`
27 : | `import_stmt`
Andrés Delfinocdb96f42018-11-07 14:32:18 -030028 : | `future_stmt`
Georg Brandl116aa622007-08-15 14:28:22 +000029 : | `global_stmt`
Georg Brandl02c30562007-09-07 17:52:53 +000030 : | `nonlocal_stmt`
Georg Brandl116aa622007-08-15 14:28:22 +000031
32
33.. _exprstmts:
34
35Expression statements
36=====================
37
Christian Heimesfaf2f632008-01-06 16:59:19 +000038.. index::
39 pair: expression; statement
40 pair: expression; list
Georg Brandl02c30562007-09-07 17:52:53 +000041.. index:: pair: expression; list
Georg Brandl116aa622007-08-15 14:28:22 +000042
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::
Martin Panter0c0da482016-06-12 01:46:50 +000050 expression_stmt: `starred_expression`
Georg Brandl116aa622007-08-15 14:28:22 +000051
Georg Brandl116aa622007-08-15 14:28:22 +000052An 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
Georg Brandl02c30562007-09-07 17:52:53 +000066standard output on a line by itself (except if the result is ``None``, so that
67procedure calls do not cause any output.)
Georg Brandl116aa622007-08-15 14:28:22 +000068
Georg Brandl116aa622007-08-15 14:28:22 +000069.. _assignment:
70
71Assignment statements
72=====================
73
74.. index::
Serhiy Storchaka913876d2018-10-28 13:41:26 +020075 single: = (equals); assignment statement
Georg Brandl116aa622007-08-15 14:28:22 +000076 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::
Martin Panter0c0da482016-06-12 01:46:50 +000086 assignment_stmt: (`target_list` "=")+ (`starred_expression` | `yield_expression`)
Georg Brandl116aa622007-08-15 14:28:22 +000087 target_list: `target` ("," `target`)* [","]
88 target: `identifier`
Berker Peksag094c9c92016-05-18 08:44:29 +030089 : | "(" [`target_list`] ")"
90 : | "[" [`target_list`] "]"
Georg Brandl116aa622007-08-15 14:28:22 +000091 : | `attributeref`
92 : | `subscription`
93 : | `slicing`
Georg Brandl02c30562007-09-07 17:52:53 +000094 : | "*" `target`
Georg Brandl116aa622007-08-15 14:28:22 +000095
Raymond Hettingeraa7886d2014-05-26 22:20:37 -070096(See section :ref:`primaries` for the syntax definitions for *attributeref*,
97*subscription*, and *slicing*.)
Georg Brandl116aa622007-08-15 14:28:22 +000098
Georg Brandl116aa622007-08-15 14:28:22 +000099An 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
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200116 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
Georg Brandl116aa622007-08-15 14:28:22 +0000120
Georg Brandl02c30562007-09-07 17:52:53 +0000121Assignment of an object to a target list, optionally enclosed in parentheses or
122square brackets, is recursively defined as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000123
Julien Palard082875d2018-11-12 00:59:39 +0100124* If the target list is a single target with no trailing comma,
125 optionally in parentheses, the object is assigned to that target.
Georg Brandl116aa622007-08-15 14:28:22 +0000126
Julien Palard082875d2018-11-12 00:59:39 +0100127* Else: The object must be an iterable with the same number of
Berker Peksag094c9c92016-05-18 08:44:29 +0300128 items as there are targets in the target list, and the items are assigned,
129 from left to right, to the corresponding targets.
Georg Brandl02c30562007-09-07 17:52:53 +0000130
131 * If the target list contains one target prefixed with an asterisk, called a
Berker Peksag094c9c92016-05-18 08:44:29 +0300132 "starred" target: The object must be an iterable with at least as many items
Georg Brandl02c30562007-09-07 17:52:53 +0000133 as there are targets in the target list, minus one. The first items of the
Berker Peksag094c9c92016-05-18 08:44:29 +0300134 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
Georg Brandl02c30562007-09-07 17:52:53 +0000137 assigned to the starred target (the list can be empty).
138
Berker Peksag094c9c92016-05-18 08:44:29 +0300139 * Else: The object must be an iterable with the same number of items as there
Georg Brandl02c30562007-09-07 17:52:53 +0000140 are targets in the target list, and the items are assigned, from left to
141 right, to the corresponding targets.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143Assignment of an object to a single target is recursively defined as follows.
144
145* If the target is an identifier (name):
146
Georg Brandl02c30562007-09-07 17:52:53 +0000147 * 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Georg Brandl02c30562007-09-07 17:52:53 +0000151 * Otherwise: the name is bound to the object in the global namespace or the
152 outer namespace determined by :keyword:`nonlocal`, respectively.
Georg Brandl116aa622007-08-15 14:28:22 +0000153
Georg Brandl482b1512010-03-21 09:02:59 +0000154 .. index:: single: destructor
155
Georg Brandl02c30562007-09-07 17:52:53 +0000156 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000159
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000160 .. index:: pair: attribute; assignment
161
Georg Brandl116aa622007-08-15 14:28:22 +0000162* If the target is an attribute reference: The primary expression in the
163 reference is evaluated. It should yield an object with assignable attributes;
Georg Brandl02c30562007-09-07 17:52:53 +0000164 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
Georg Brandl116aa622007-08-15 14:28:22 +0000167 :exc:`AttributeError`).
168
Georg Brandlee8783d2009-09-16 16:00:31 +0000169 .. _attr-target-note:
170
171 Note: If the object is a class instance and the attribute reference occurs on
Andre Delfino5861cdd2019-05-03 11:59:05 -0300172 both sides of the assignment operator, the right-hand side expression, ``a.x`` can access
Georg Brandlee8783d2009-09-16 16:00:31 +0000173 either an instance attribute or (if no instance attribute exists) a class
Andre Delfino5861cdd2019-05-03 11:59:05 -0300174 attribute. The left-hand side target ``a.x`` is always set as an instance attribute,
Georg Brandlee8783d2009-09-16 16:00:31 +0000175 creating it if necessary. Thus, the two occurrences of ``a.x`` do not
Andre Delfino5861cdd2019-05-03 11:59:05 -0300176 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
Georg Brandlee8783d2009-09-16 16:00:31 +0000178 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
Georg Brandl116aa622007-08-15 14:28:22 +0000188 .. index::
189 pair: subscription; assignment
190 object: mutable
191
192* If the target is a subscription: The primary expression in the reference is
Georg Brandl02c30562007-09-07 17:52:53 +0000193 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
Georg Brandl116aa622007-08-15 14:28:22 +0000195 evaluated.
196
197 .. index::
198 object: sequence
199 object: list
200
Georg Brandl02c30562007-09-07 17:52:53 +0000201 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).
Georg Brandl116aa622007-08-15 14:28:22 +0000207
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
Georg Brandl02c30562007-09-07 17:52:53 +0000218 For user-defined objects, the :meth:`__setitem__` method is called with
219 appropriate arguments.
220
Georg Brandl116aa622007-08-15 14:28:22 +0000221 .. 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
Georg Brandl02c30562007-09-07 17:52:53 +0000227 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
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700233 target sequence, if the target sequence allows it.
Georg Brandl116aa622007-08-15 14:28:22 +0000234
Georg Brandl495f7b52009-10-27 15:28:25 +0000235.. 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000240
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700241Although the definition of assignment implies that overlaps between the
Martin Panterf05641642016-05-08 13:48:10 +0000242left-hand side and the right-hand side are 'simultaneous' (for example ``a, b =
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700243b, 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]``::
Georg Brandl116aa622007-08-15 14:28:22 +0000246
247 x = [0, 1]
248 i = 0
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700249 i, x[i] = 1, 2 # i is updated, then x[i] is updated
Georg Brandl6911e3c2007-09-04 07:15:32 +0000250 print(x)
Georg Brandl116aa622007-08-15 14:28:22 +0000251
252
Georg Brandl02c30562007-09-07 17:52:53 +0000253.. seealso::
254
255 :pep:`3132` - Extended Iterable Unpacking
256 The specification for the ``*target`` feature.
257
258
Georg Brandl116aa622007-08-15 14:28:22 +0000259.. _augassign:
260
261Augmented assignment statements
262-------------------------------
263
264.. index::
265 pair: augmented; assignment
266 single: statement; assignment, augmented
Terry Jan Reedy9cc90262014-04-29 01:19:17 -0400267 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
Georg Brandl116aa622007-08-15 14:28:22 +0000279
280Augmented assignment is the combination, in a single statement, of a binary
281operation and an assignment statement:
282
283.. productionlist::
Benjamin Petersonb58dda72009-01-18 22:27:04 +0000284 augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
285 augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Benjamin Petersond51374e2014-04-09 23:55:56 -0400286 augop: "+=" | "-=" | "*=" | "@=" | "/=" | "//=" | "%=" | "**="
Georg Brandl116aa622007-08-15 14:28:22 +0000287 : | ">>=" | "<<=" | "&=" | "^=" | "|="
288
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700289(See section :ref:`primaries` for the syntax definitions of the last three
Georg Brandl116aa622007-08-15 14:28:22 +0000290symbols.)
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
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700303Unlike 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
Georg Brandl116aa622007-08-15 14:28:22 +0000308With 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
Georg Brandlee8783d2009-09-16 16:00:31 +0000314For targets which are attribute references, the same :ref:`caveat about class
315and instance attributes <attr-target-note>` applies as for regular assignments.
Georg Brandl116aa622007-08-15 14:28:22 +0000316
317
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700318.. _annassign:
319
320Annotated assignment statements
321-------------------------------
322
323.. index::
324 pair: annotated; assignment
325 single: statement; assignment, annotated
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200326 single: : (colon); annotated variable
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700327
Cheryl Sabellab7105c92018-12-24 00:09:09 -0500328:term:`Annotation <variable annotation>` assignment is the combination, in a single
329statement, of a variable or attribute annotation and an optional assignment statement:
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700330
331.. productionlist::
Ivan Levkivskyi82eac262019-06-03 00:41:00 +0100332 annotated_assignment_stmt: `augtarget` ":" `expression`
333 : ["=" (`expression_list` | `yield_expression`)]
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700334
335The difference from normal :ref:`assignment` is that only single target and
336only single right hand side value is allowed.
337
338For simple names as assignment targets, if in class or module scope,
339the annotations are evaluated and stored in a special class or module
340attribute :attr:`__annotations__`
Guido van Rossum015d8742016-09-11 09:45:24 -0700341that is a dictionary mapping from variable names (mangled if private) to
342evaluated annotations. This attribute is writable and is automatically
343created at the start of class or module body execution, if annotations
344are found statically.
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700345
346For expressions as assignment targets, the annotations are evaluated if
347in class or module scope, but not stored.
348
349If a name is annotated in a function scope, then this name is local for
350that scope. Annotations are never evaluated and stored in function scopes.
351
352If the right hand side is present, an annotated
353assignment performs the actual assignment before evaluating annotations
354(where applicable). If the right hand side is not present for an expression
355target, then the interpreter evaluates the target except for the last
356:meth:`__setitem__` or :meth:`__setattr__` call.
357
358.. seealso::
359
Andrés Delfino0f14fc12018-10-19 20:31:15 -0300360 :pep:`526` - Syntax for Variable Annotations
361 The proposal that added syntax for annotating the types of variables
362 (including class variables and instance variables), instead of expressing
363 them through comments.
364
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700365 :pep:`484` - Type hints
Andrés Delfino0f14fc12018-10-19 20:31:15 -0300366 The proposal that added the :mod:`typing` module to provide a standard
367 syntax for type annotations that can be used in static analysis tools and
368 IDEs.
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700369
Ivan Levkivskyi82eac262019-06-03 00:41:00 +0100370.. versionchanged:: 3.8
371 Now annotated assignments allow same expressions in the right hand side as
372 the augmented assignments. Previously, some expressions (like un-parenthesized
373 tuple expressions) caused a syntax error.
374
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700375
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000376.. _assert:
377
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200378The :keyword:`!assert` statement
379================================
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000380
381.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200382 ! statement: assert
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000383 pair: debugging; assertions
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200384 single: , (comma); expression list
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000385
386Assert statements are a convenient way to insert debugging assertions into a
387program:
388
389.. productionlist::
390 assert_stmt: "assert" `expression` ["," `expression`]
391
392The simple form, ``assert expression``, is equivalent to ::
393
394 if __debug__:
Serhiy Storchakadba90392016-05-10 12:01:23 +0300395 if not expression: raise AssertionError
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000396
397The extended form, ``assert expression1, expression2``, is equivalent to ::
398
399 if __debug__:
Serhiy Storchakadba90392016-05-10 12:01:23 +0300400 if not expression1: raise AssertionError(expression2)
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000401
402.. index::
403 single: __debug__
404 exception: AssertionError
405
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000406These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000407the built-in variables with those names. In the current implementation, the
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000408built-in variable :const:`__debug__` is ``True`` under normal circumstances,
Andrés Delfinoea6a28c2018-11-07 14:06:45 -0300409``False`` when optimization is requested (command line option :option:`-O`). The current
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000410code generator emits no code for an assert statement when optimization is
411requested at compile time. Note that it is unnecessary to include the source
412code for the expression that failed in the error message; it will be displayed
413as part of the stack trace.
414
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000415Assignments to :const:`__debug__` are illegal. The value for the built-in variable
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000416is determined when the interpreter starts.
417
418
Georg Brandl116aa622007-08-15 14:28:22 +0000419.. _pass:
420
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200421The :keyword:`!pass` statement
422==============================
Georg Brandl116aa622007-08-15 14:28:22 +0000423
Christian Heimesfaf2f632008-01-06 16:59:19 +0000424.. index::
425 statement: pass
426 pair: null; operation
Georg Brandl02c30562007-09-07 17:52:53 +0000427 pair: null; operation
Georg Brandl116aa622007-08-15 14:28:22 +0000428
429.. productionlist::
430 pass_stmt: "pass"
431
Georg Brandl116aa622007-08-15 14:28:22 +0000432:keyword:`pass` is a null operation --- when it is executed, nothing happens.
433It is useful as a placeholder when a statement is required syntactically, but no
434code needs to be executed, for example::
435
436 def f(arg): pass # a function that does nothing (yet)
437
438 class C: pass # a class with no methods (yet)
439
440
441.. _del:
442
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200443The :keyword:`!del` statement
444=============================
Georg Brandl116aa622007-08-15 14:28:22 +0000445
Christian Heimesfaf2f632008-01-06 16:59:19 +0000446.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200447 ! statement: del
Christian Heimesfaf2f632008-01-06 16:59:19 +0000448 pair: deletion; target
449 triple: deletion; target; list
Georg Brandl116aa622007-08-15 14:28:22 +0000450
451.. productionlist::
452 del_stmt: "del" `target_list`
453
Georg Brandl116aa622007-08-15 14:28:22 +0000454Deletion is recursively defined very similar to the way assignment is defined.
Sandro Tosi75c71cc2011-12-24 19:56:04 +0100455Rather than spelling it out in full details, here are some hints.
Georg Brandl116aa622007-08-15 14:28:22 +0000456
457Deletion of a target list recursively deletes each target, from left to right.
458
459.. index::
460 statement: global
461 pair: unbinding; name
462
Georg Brandl02c30562007-09-07 17:52:53 +0000463Deletion of a name removes the binding of that name from the local or global
Georg Brandl116aa622007-08-15 14:28:22 +0000464namespace, depending on whether the name occurs in a :keyword:`global` statement
465in the same code block. If the name is unbound, a :exc:`NameError` exception
466will be raised.
467
Georg Brandl116aa622007-08-15 14:28:22 +0000468.. index:: pair: attribute; deletion
469
470Deletion of attribute references, subscriptions and slicings is passed to the
471primary object involved; deletion of a slicing is in general equivalent to
472assignment of an empty slice of the right type (but even this is determined by
473the sliced object).
474
Amaury Forgeot d'Arcba117ef2010-09-10 21:39:53 +0000475.. versionchanged:: 3.2
476 Previously it was illegal to delete a name from the local namespace if it
477 occurs as a free variable in a nested block.
478
Georg Brandl116aa622007-08-15 14:28:22 +0000479
480.. _return:
481
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200482The :keyword:`!return` statement
483================================
Georg Brandl116aa622007-08-15 14:28:22 +0000484
Christian Heimesfaf2f632008-01-06 16:59:19 +0000485.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200486 ! statement: return
Christian Heimesfaf2f632008-01-06 16:59:19 +0000487 pair: function; definition
488 pair: class; definition
Georg Brandl116aa622007-08-15 14:28:22 +0000489
490.. productionlist::
491 return_stmt: "return" [`expression_list`]
492
Georg Brandl116aa622007-08-15 14:28:22 +0000493:keyword:`return` may only occur syntactically nested in a function definition,
494not within a nested class definition.
495
496If an expression list is present, it is evaluated, else ``None`` is substituted.
497
498:keyword:`return` leaves the current function call with the expression list (or
499``None``) as return value.
500
501.. index:: keyword: finally
502
503When :keyword:`return` passes control out of a :keyword:`try` statement with a
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200504:keyword:`finally` clause, that :keyword:`!finally` clause is executed before
Georg Brandl116aa622007-08-15 14:28:22 +0000505really leaving the function.
506
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000507In a generator function, the :keyword:`return` statement indicates that the
508generator is done and will cause :exc:`StopIteration` to be raised. The returned
509value (if any) is used as an argument to construct :exc:`StopIteration` and
510becomes the :attr:`StopIteration.value` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000511
Yury Selivanov03660042016-12-15 17:36:05 -0500512In an asynchronous generator function, an empty :keyword:`return` statement
513indicates that the asynchronous generator is done and will cause
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200514:exc:`StopAsyncIteration` to be raised. A non-empty :keyword:`!return`
Yury Selivanov03660042016-12-15 17:36:05 -0500515statement is a syntax error in an asynchronous generator function.
Georg Brandl116aa622007-08-15 14:28:22 +0000516
517.. _yield:
518
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200519The :keyword:`!yield` statement
520===============================
Georg Brandl116aa622007-08-15 14:28:22 +0000521
Christian Heimesfaf2f632008-01-06 16:59:19 +0000522.. index::
523 statement: yield
524 single: generator; function
525 single: generator; iterator
526 single: function; generator
527 exception: StopIteration
528
Georg Brandl116aa622007-08-15 14:28:22 +0000529.. productionlist::
530 yield_stmt: `yield_expression`
531
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500532A :keyword:`yield` statement is semantically equivalent to a :ref:`yield
533expression <yieldexpr>`. The yield statement can be used to omit the parentheses
534that would otherwise be required in the equivalent yield expression
535statement. For example, the yield statements ::
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000536
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500537 yield <expr>
538 yield from <expr>
Christian Heimes33fe8092008-04-13 13:53:33 +0000539
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500540are equivalent to the yield expression statements ::
Christian Heimes33fe8092008-04-13 13:53:33 +0000541
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500542 (yield <expr>)
543 (yield from <expr>)
Christian Heimes33fe8092008-04-13 13:53:33 +0000544
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500545Yield expressions and statements are only used when defining a :term:`generator`
546function, and are only used in the body of the generator function. Using yield
547in a function definition is sufficient to cause that definition to create a
548generator function instead of a normal function.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000549
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500550For full details of :keyword:`yield` semantics, refer to the
551:ref:`yieldexpr` section.
Georg Brandl116aa622007-08-15 14:28:22 +0000552
553.. _raise:
554
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200555The :keyword:`!raise` statement
556===============================
Georg Brandl116aa622007-08-15 14:28:22 +0000557
Christian Heimesfaf2f632008-01-06 16:59:19 +0000558.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200559 ! statement: raise
Christian Heimesfaf2f632008-01-06 16:59:19 +0000560 single: exception
561 pair: raising; exception
Georg Brandl1aea30a2008-07-19 15:51:07 +0000562 single: __traceback__ (exception attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000563
564.. productionlist::
Georg Brandle06de8b2008-05-05 21:42:51 +0000565 raise_stmt: "raise" [`expression` ["from" `expression`]]
Georg Brandl116aa622007-08-15 14:28:22 +0000566
567If no expressions are present, :keyword:`raise` re-raises the last exception
568that was active in the current scope. If no exception is active in the current
Sandro Tosib2794c82012-01-01 12:17:15 +0100569scope, a :exc:`RuntimeError` exception is raised indicating that this is an
570error.
Georg Brandl116aa622007-08-15 14:28:22 +0000571
Georg Brandl02c30562007-09-07 17:52:53 +0000572Otherwise, :keyword:`raise` evaluates the first expression as the exception
573object. It must be either a subclass or an instance of :class:`BaseException`.
574If it is a class, the exception instance will be obtained when needed by
575instantiating the class with no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000576
Georg Brandl02c30562007-09-07 17:52:53 +0000577The :dfn:`type` of the exception is the exception instance's class, the
578:dfn:`value` is the instance itself.
Georg Brandl116aa622007-08-15 14:28:22 +0000579
580.. index:: object: traceback
581
Georg Brandl02c30562007-09-07 17:52:53 +0000582A traceback object is normally created automatically when an exception is raised
Georg Brandle06de8b2008-05-05 21:42:51 +0000583and attached to it as the :attr:`__traceback__` attribute, which is writable.
584You can create an exception and set your own traceback in one step using the
585:meth:`with_traceback` exception method (which returns the same exception
586instance, with its traceback set to its argument), like so::
Georg Brandl02c30562007-09-07 17:52:53 +0000587
Benjamin Petersonb7851692009-02-16 16:15:34 +0000588 raise Exception("foo occurred").with_traceback(tracebackobj)
Georg Brandl02c30562007-09-07 17:52:53 +0000589
Georg Brandl1aea30a2008-07-19 15:51:07 +0000590.. index:: pair: exception; chaining
591 __cause__ (exception attribute)
592 __context__ (exception attribute)
Georg Brandl48310cd2009-01-03 21:18:54 +0000593
Georg Brandl1aea30a2008-07-19 15:51:07 +0000594The ``from`` clause is used for exception chaining: if given, the second
595*expression* must be another exception class or instance, which will then be
596attached to the raised exception as the :attr:`__cause__` attribute (which is
597writable). If the raised exception is not handled, both exceptions will be
598printed::
Georg Brandl02c30562007-09-07 17:52:53 +0000599
Georg Brandl1aea30a2008-07-19 15:51:07 +0000600 >>> try:
601 ... print(1 / 0)
602 ... except Exception as exc:
603 ... raise RuntimeError("Something bad happened") from exc
604 ...
605 Traceback (most recent call last):
606 File "<stdin>", line 2, in <module>
csabella763557e2017-05-20 02:48:28 -0400607 ZeroDivisionError: division by zero
Georg Brandl1aea30a2008-07-19 15:51:07 +0000608
609 The above exception was the direct cause of the following exception:
610
611 Traceback (most recent call last):
612 File "<stdin>", line 4, in <module>
613 RuntimeError: Something bad happened
614
615A similar mechanism works implicitly if an exception is raised inside an
Georg Brandla4c8c472014-10-31 10:38:49 +0100616exception handler or a :keyword:`finally` clause: the previous exception is then
617attached as the new exception's :attr:`__context__` attribute::
Georg Brandl1aea30a2008-07-19 15:51:07 +0000618
619 >>> try:
620 ... print(1 / 0)
621 ... except:
622 ... raise RuntimeError("Something bad happened")
623 ...
624 Traceback (most recent call last):
625 File "<stdin>", line 2, in <module>
csabella763557e2017-05-20 02:48:28 -0400626 ZeroDivisionError: division by zero
Georg Brandl1aea30a2008-07-19 15:51:07 +0000627
628 During handling of the above exception, another exception occurred:
629
630 Traceback (most recent call last):
631 File "<stdin>", line 4, in <module>
632 RuntimeError: Something bad happened
Georg Brandl116aa622007-08-15 14:28:22 +0000633
csabella763557e2017-05-20 02:48:28 -0400634Exception chaining can be explicitly suppressed by specifying :const:`None` in
635the ``from`` clause::
636
637 >>> try:
638 ... print(1 / 0)
639 ... except:
640 ... raise RuntimeError("Something bad happened") from None
641 ...
642 Traceback (most recent call last):
643 File "<stdin>", line 4, in <module>
644 RuntimeError: Something bad happened
645
Georg Brandl116aa622007-08-15 14:28:22 +0000646Additional information on exceptions can be found in section :ref:`exceptions`,
647and information about handling exceptions is in section :ref:`try`.
648
csabella763557e2017-05-20 02:48:28 -0400649.. versionchanged:: 3.3
Mariatta9efad1e2017-05-30 15:26:42 -0700650 :const:`None` is now permitted as ``Y`` in ``raise X from Y``.
csabella763557e2017-05-20 02:48:28 -0400651
652.. versionadded:: 3.3
653 The ``__suppress_context__`` attribute to suppress automatic display of the
Mariatta9efad1e2017-05-30 15:26:42 -0700654 exception context.
Georg Brandl116aa622007-08-15 14:28:22 +0000655
656.. _break:
657
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200658The :keyword:`!break` statement
659===============================
Georg Brandl116aa622007-08-15 14:28:22 +0000660
Christian Heimesfaf2f632008-01-06 16:59:19 +0000661.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200662 ! statement: break
Christian Heimesfaf2f632008-01-06 16:59:19 +0000663 statement: for
664 statement: while
665 pair: loop; statement
Georg Brandl116aa622007-08-15 14:28:22 +0000666
667.. productionlist::
668 break_stmt: "break"
669
Georg Brandl116aa622007-08-15 14:28:22 +0000670:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
671:keyword:`while` loop, but not nested in a function or class definition within
672that loop.
673
674.. index:: keyword: else
Georg Brandl02c30562007-09-07 17:52:53 +0000675 pair: loop control; target
Georg Brandl116aa622007-08-15 14:28:22 +0000676
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200677It terminates the nearest enclosing loop, skipping the optional :keyword:`!else`
Georg Brandl116aa622007-08-15 14:28:22 +0000678clause if the loop has one.
679
Georg Brandl116aa622007-08-15 14:28:22 +0000680If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
681target keeps its current value.
682
683.. index:: keyword: finally
684
685When :keyword:`break` passes control out of a :keyword:`try` statement with a
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200686:keyword:`finally` clause, that :keyword:`!finally` clause is executed before
Georg Brandl116aa622007-08-15 14:28:22 +0000687really leaving the loop.
688
689
690.. _continue:
691
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200692The :keyword:`!continue` statement
693==================================
Georg Brandl116aa622007-08-15 14:28:22 +0000694
Christian Heimesfaf2f632008-01-06 16:59:19 +0000695.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200696 ! statement: continue
Christian Heimesfaf2f632008-01-06 16:59:19 +0000697 statement: for
698 statement: while
699 pair: loop; statement
700 keyword: finally
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702.. productionlist::
703 continue_stmt: "continue"
704
Georg Brandl116aa622007-08-15 14:28:22 +0000705:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
Serhiy Storchakafe2bbb12018-03-18 09:56:52 +0200706:keyword:`while` loop, but not nested in a function or class definition within
707that loop. It continues with the next cycle of the nearest enclosing loop.
Georg Brandl116aa622007-08-15 14:28:22 +0000708
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000709When :keyword:`continue` passes control out of a :keyword:`try` statement with a
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200710:keyword:`finally` clause, that :keyword:`!finally` clause is executed before
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000711really starting the next loop cycle.
712
Georg Brandl116aa622007-08-15 14:28:22 +0000713
714.. _import:
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000715.. _from:
Georg Brandl116aa622007-08-15 14:28:22 +0000716
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200717The :keyword:`!import` statement
718================================
Georg Brandl116aa622007-08-15 14:28:22 +0000719
720.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200721 ! statement: import
Georg Brandl116aa622007-08-15 14:28:22 +0000722 single: module; importing
723 pair: name; binding
724 keyword: from
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300725 keyword: as
726 exception: ImportError
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200727 single: , (comma); import statement
Georg Brandl116aa622007-08-15 14:28:22 +0000728
729.. productionlist::
Andrés Delfinocaccca782018-07-07 17:24:46 -0300730 import_stmt: "import" `module` ["as" `identifier`] ("," `module` ["as" `identifier`])*
731 : | "from" `relative_module` "import" `identifier` ["as" `identifier`]
732 : ("," `identifier` ["as" `identifier`])*
733 : | "from" `relative_module` "import" "(" `identifier` ["as" `identifier`]
734 : ("," `identifier` ["as" `identifier`])* [","] ")"
Georg Brandl116aa622007-08-15 14:28:22 +0000735 : | "from" `module` "import" "*"
736 module: (`identifier` ".")* `identifier`
737 relative_module: "."* `module` | "."+
Georg Brandl116aa622007-08-15 14:28:22 +0000738
Nick Coghlane3376ef2012-08-02 22:02:35 +1000739The basic import statement (no :keyword:`from` clause) is executed in two
740steps:
Barry Warsawdadebab2012-07-31 16:03:09 -0400741
Nick Coghlane3376ef2012-08-02 22:02:35 +1000742#. find a module, loading and initializing it if necessary
743#. define a name or names in the local namespace for the scope where
744 the :keyword:`import` statement occurs.
Georg Brandl116aa622007-08-15 14:28:22 +0000745
Nick Coghlane3376ef2012-08-02 22:02:35 +1000746When the statement contains multiple clauses (separated by
747commas) the two steps are carried out separately for each clause, just
Ned Deilycec95812016-05-17 21:44:46 -0400748as though the clauses had been separated out into individual import
Nick Coghlane3376ef2012-08-02 22:02:35 +1000749statements.
Georg Brandl116aa622007-08-15 14:28:22 +0000750
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700751The details of the first step, finding and loading modules are described in
Nick Coghlane3376ef2012-08-02 22:02:35 +1000752greater detail in the section on the :ref:`import system <importsystem>`,
753which also describes the various types of packages and modules that can
754be imported, as well as all the hooks that can be used to customize
755the import system. Note that failures in this step may indicate either
756that the module could not be located, *or* that an error occurred while
757initializing the module, which includes execution of the module's code.
Georg Brandl116aa622007-08-15 14:28:22 +0000758
Nick Coghlane3376ef2012-08-02 22:02:35 +1000759If the requested module is retrieved successfully, it will be made
760available in the local namespace in one of three ways:
761
Terry Jan Reedy7c895ed2014-04-29 00:58:56 -0400762.. index:: single: as; import statement
763
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200764* If the module name is followed by :keyword:`!as`, then the name
765 following :keyword:`!as` is bound directly to the imported module.
Nick Coghlane3376ef2012-08-02 22:02:35 +1000766* If no other name is specified, and the module being imported is a top
767 level module, the module's name is bound in the local namespace as a
768 reference to the imported module
769* If the module being imported is *not* a top level module, then the name
770 of the top level package that contains the module is bound in the local
771 namespace as a reference to the top level package. The imported module
772 must be accessed using its full qualified name rather than directly
773
Georg Brandl116aa622007-08-15 14:28:22 +0000774
775.. index::
776 pair: name; binding
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300777 single: from; import statement
Georg Brandl116aa622007-08-15 14:28:22 +0000778
Nick Coghlane3376ef2012-08-02 22:02:35 +1000779The :keyword:`from` form uses a slightly more complex process:
780
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700781#. find the module specified in the :keyword:`from` clause, loading and
Nick Coghlane3376ef2012-08-02 22:02:35 +1000782 initializing it if necessary;
783#. for each of the identifiers specified in the :keyword:`import` clauses:
784
785 #. check if the imported module has an attribute by that name
786 #. if not, attempt to import a submodule with that name and then
787 check the imported module again for that attribute
788 #. if the attribute is not found, :exc:`ImportError` is raised.
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700789 #. otherwise, a reference to that value is stored in the local namespace,
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200790 using the name in the :keyword:`!as` clause if it is present,
Nick Coghlane3376ef2012-08-02 22:02:35 +1000791 otherwise using the attribute name
792
793Examples::
794
795 import foo # foo imported and bound locally
796 import foo.bar.baz # foo.bar.baz imported, foo bound locally
797 import foo.bar.baz as fbb # foo.bar.baz imported and bound as fbb
798 from foo.bar import baz # foo.bar.baz imported and bound as baz
799 from foo import attr # foo imported and foo.attr bound as attr
800
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200801.. index:: single: * (asterisk); import statement
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300802
Nick Coghlane3376ef2012-08-02 22:02:35 +1000803If the list of identifiers is replaced by a star (``'*'``), all public
804names defined in the module are bound in the local namespace for the scope
805where the :keyword:`import` statement occurs.
806
807.. index:: single: __all__ (optional module attribute)
808
809The *public names* defined by a module are determined by checking the module's
810namespace for a variable named ``__all__``; if defined, it must be a sequence
811of strings which are names defined or imported by that module. The names
812given in ``__all__`` are all considered public and are required to exist. If
813``__all__`` is not defined, the set of public names includes all names found
814in the module's namespace which do not begin with an underscore character
815(``'_'``). ``__all__`` should contain the entire public API. It is intended
816to avoid accidentally exporting items that are not part of the API (such as
817library modules which were imported and used within the module).
818
Georg Brandla4c8c472014-10-31 10:38:49 +0100819The wild card form of import --- ``from module import *`` --- is only allowed at
820the module level. Attempting to use it in class or function definitions will
821raise a :exc:`SyntaxError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000822
823.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000824 single: relative; import
Georg Brandl116aa622007-08-15 14:28:22 +0000825
Brett Cannone43b0602009-03-21 03:11:16 +0000826When specifying what module to import you do not have to specify the absolute
827name of the module. When a module or package is contained within another
828package it is possible to make a relative import within the same top package
829without having to mention the package name. By using leading dots in the
830specified module or package after :keyword:`from` you can specify how high to
831traverse up the current package hierarchy without specifying exact names. One
832leading dot means the current package where the module making the import
833exists. Two dots means up one package level. Three dots is up two levels, etc.
834So if you execute ``from . import mod`` from a module in the ``pkg`` package
835then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
Florent Xicluna0c8414e2010-09-03 20:23:40 +0000836import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
Joannah Nanjekye70bf7132019-04-24 11:14:44 -0400837The specification for relative imports is contained in
838the :ref:`relativeimports` section.
Georg Brandl5b318c02008-08-03 09:47:27 +0000839
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000840:func:`importlib.import_module` is provided to support applications that
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700841determine dynamically the modules to be loaded.
Georg Brandl116aa622007-08-15 14:28:22 +0000842
843
844.. _future:
845
846Future statements
847-----------------
848
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300849.. index::
850 pair: future; statement
851 single: __future__; future statement
Georg Brandl116aa622007-08-15 14:28:22 +0000852
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
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700855specified 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000861
862.. productionlist:: *
Andrés Delfinocaccca782018-07-07 17:24:46 -0300863 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`
Georg Brandl116aa622007-08-15 14:28:22 +0000868
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
Guido van Rossum95e4d582018-01-26 08:20:18 -0800877The only feature in Python 3.7 that requires using the future statement is
878``annotations``.
Georg Brandl02c30562007-09-07 17:52:53 +0000879
Guido van Rossum95e4d582018-01-26 08:20:18 -0800880All 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000886
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
Georg Brandl22b34312009-07-26 14:54:51 +0000912Code compiled by calls to the built-in functions :func:`exec` and :func:`compile`
Georg Brandl02c30562007-09-07 17:52:53 +0000913that 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000917
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
Georg Brandlff2ad0e2009-04-27 16:51:45 +0000924.. seealso::
925
926 :pep:`236` - Back to the __future__
927 The original proposal for the __future__ mechanism.
928
Georg Brandl116aa622007-08-15 14:28:22 +0000929
930.. _global:
931
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200932The :keyword:`!global` statement
933================================
Georg Brandl116aa622007-08-15 14:28:22 +0000934
Christian Heimesfaf2f632008-01-06 16:59:19 +0000935.. index::
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200936 ! statement: global
Christian Heimesfaf2f632008-01-06 16:59:19 +0000937 triple: global; name; binding
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200938 single: , (comma); identifier list
Georg Brandl116aa622007-08-15 14:28:22 +0000939
940.. productionlist::
941 global_stmt: "global" `identifier` ("," `identifier`)*
942
Georg Brandl116aa622007-08-15 14:28:22 +0000943The :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
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200946:keyword:`!global`, although free variables may refer to globals without being
Georg Brandl116aa622007-08-15 14:28:22 +0000947declared global.
948
949Names listed in a :keyword:`global` statement must not be used in the same code
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200950block textually preceding that :keyword:`!global` statement.
Georg Brandl116aa622007-08-15 14:28:22 +0000951
952Names listed in a :keyword:`global` statement must not be defined as formal
953parameters or in a :keyword:`for` loop control target, :keyword:`class`
Guido van Rossum6cff8742016-09-09 09:36:26 -0700954definition, function definition, :keyword:`import` statement, or variable
955annotation.
Georg Brandl116aa622007-08-15 14:28:22 +0000956
Georg Brandl495f7b52009-10-27 15:28:25 +0000957.. impl-detail::
958
kms708478d59aca2017-09-28 15:54:48 -0400959 The current implementation does not enforce some of these restrictions, but
Georg Brandl495f7b52009-10-27 15:28:25 +0000960 programs should not abuse this freedom, as future implementations may enforce
961 them or silently change the meaning of the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000962
963.. index::
964 builtin: exec
965 builtin: eval
966 builtin: compile
967
Jim Fasarakis-Hilliardf34c68502017-05-08 14:36:29 +0300968**Programmer's note:** :keyword:`global` is a directive to the parser. It
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200969applies 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
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000971object supplied to the built-in :func:`exec` function does not affect the code
Georg Brandl116aa622007-08-15 14:28:22 +0000972block *containing* the function call, and code contained in such a string is
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200973unaffected by :keyword:`!global` statements in the code containing the function
Georg Brandl116aa622007-08-15 14:28:22 +0000974call. The same applies to the :func:`eval` and :func:`compile` functions.
975
Georg Brandl02c30562007-09-07 17:52:53 +0000976
977.. _nonlocal:
978
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200979The :keyword:`!nonlocal` statement
980==================================
Georg Brandl02c30562007-09-07 17:52:53 +0000981
982.. index:: statement: nonlocal
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200983 single: , (comma); identifier list
Georg Brandl02c30562007-09-07 17:52:53 +0000984
985.. productionlist::
986 nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*
987
Georg Brandlc5d98b42007-12-04 18:11:03 +0000988.. XXX add when implemented
Martin Panter0c0da482016-06-12 01:46:50 +0000989 : ["=" (`target_list` "=")+ starred_expression]
Georg Brandl06788c92009-01-03 21:31:47 +0000990 : | "nonlocal" identifier augop expression_list
Georg Brandlc5d98b42007-12-04 18:11:03 +0000991
Georg Brandl48310cd2009-01-03 21:18:54 +0000992The :keyword:`nonlocal` statement causes the listed identifiers to refer to
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700993previously 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.
Georg Brandlc5d98b42007-12-04 18:11:03 +0000997
Georg Brandlc5d98b42007-12-04 18:11:03 +0000998.. XXX not implemented
999 The :keyword:`nonlocal` statement may prepend an assignment or augmented
1000 assignment, but not an expression.
1001
Raymond Hettingeraa7886d2014-05-26 22:20:37 -07001002Names listed in a :keyword:`nonlocal` statement, unlike those listed in a
Georg Brandlc5d98b42007-12-04 18:11:03 +00001003: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
Georg Brandl48310cd2009-01-03 21:18:54 +00001007Names listed in a :keyword:`nonlocal` statement must not collide with
Georg Brandlc5d98b42007-12-04 18:11:03 +00001008pre-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.