blob: 1fe1cde1d8d23e6c7c9f4faa294d6a72e878559c [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`
28 : | `global_stmt`
Georg Brandl02c30562007-09-07 17:52:53 +000029 : | `nonlocal_stmt`
Georg Brandl116aa622007-08-15 14:28:22 +000030
31
32.. _exprstmts:
33
34Expression statements
35=====================
36
Christian Heimesfaf2f632008-01-06 16:59:19 +000037.. index::
38 pair: expression; statement
39 pair: expression; list
Georg Brandl02c30562007-09-07 17:52:53 +000040.. index:: pair: expression; list
Georg Brandl116aa622007-08-15 14:28:22 +000041
42Expression statements are used (mostly interactively) to compute and write a
43value, or (usually) to call a procedure (a function that returns no meaningful
44result; in Python, procedures return the value ``None``). Other uses of
45expression statements are allowed and occasionally useful. The syntax for an
46expression statement is:
47
48.. productionlist::
Martin Panter0c0da482016-06-12 01:46:50 +000049 expression_stmt: `starred_expression`
Georg Brandl116aa622007-08-15 14:28:22 +000050
Georg Brandl116aa622007-08-15 14:28:22 +000051An expression statement evaluates the expression list (which may be a single
52expression).
53
54.. index::
55 builtin: repr
56 object: None
57 pair: string; conversion
58 single: output
59 pair: standard; output
60 pair: writing; values
61 pair: procedure; call
62
63In interactive mode, if the value is not ``None``, it is converted to a string
64using the built-in :func:`repr` function and the resulting string is written to
Georg Brandl02c30562007-09-07 17:52:53 +000065standard output on a line by itself (except if the result is ``None``, so that
66procedure calls do not cause any output.)
Georg Brandl116aa622007-08-15 14:28:22 +000067
Georg Brandl116aa622007-08-15 14:28:22 +000068.. _assignment:
69
70Assignment statements
71=====================
72
73.. index::
Serhiy Storchaka913876d2018-10-28 13:41:26 +020074 single: = (equals); assignment statement
Georg Brandl116aa622007-08-15 14:28:22 +000075 pair: assignment; statement
76 pair: binding; name
77 pair: rebinding; name
78 object: mutable
79 pair: attribute; assignment
80
81Assignment statements are used to (re)bind names to values and to modify
82attributes or items of mutable objects:
83
84.. productionlist::
Martin Panter0c0da482016-06-12 01:46:50 +000085 assignment_stmt: (`target_list` "=")+ (`starred_expression` | `yield_expression`)
Georg Brandl116aa622007-08-15 14:28:22 +000086 target_list: `target` ("," `target`)* [","]
87 target: `identifier`
Berker Peksag094c9c92016-05-18 08:44:29 +030088 : | "(" [`target_list`] ")"
89 : | "[" [`target_list`] "]"
Georg Brandl116aa622007-08-15 14:28:22 +000090 : | `attributeref`
91 : | `subscription`
92 : | `slicing`
Georg Brandl02c30562007-09-07 17:52:53 +000093 : | "*" `target`
Georg Brandl116aa622007-08-15 14:28:22 +000094
Raymond Hettingeraa7886d2014-05-26 22:20:37 -070095(See section :ref:`primaries` for the syntax definitions for *attributeref*,
96*subscription*, and *slicing*.)
Georg Brandl116aa622007-08-15 14:28:22 +000097
Georg Brandl116aa622007-08-15 14:28:22 +000098An assignment statement evaluates the expression list (remember that this can be
99a single expression or a comma-separated list, the latter yielding a tuple) and
100assigns the single resulting object to each of the target lists, from left to
101right.
102
103.. index::
104 single: target
105 pair: target; list
106
107Assignment is defined recursively depending on the form of the target (list).
108When a target is part of a mutable object (an attribute reference, subscription
109or slicing), the mutable object must ultimately perform the assignment and
110decide about its validity, and may raise an exception if the assignment is
111unacceptable. The rules observed by various types and the exceptions raised are
112given with the definition of the object types (see section :ref:`types`).
113
114.. index:: triple: target; list; assignment
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200115 single: , (comma); in target list
116 single: * (asterisk); in assignment target list
117 single: [] (square brackets); in assignment target list
118 single: () (parentheses); in assignment target list
Georg Brandl116aa622007-08-15 14:28:22 +0000119
Georg Brandl02c30562007-09-07 17:52:53 +0000120Assignment of an object to a target list, optionally enclosed in parentheses or
121square brackets, is recursively defined as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000122
Berker Peksag094c9c92016-05-18 08:44:29 +0300123* If the target list is empty: The object must also be an empty iterable.
Georg Brandl116aa622007-08-15 14:28:22 +0000124
Berker Peksag094c9c92016-05-18 08:44:29 +0300125* If the target list is a single target in parentheses: The object is assigned
126 to that target.
127
128* If the target list is a comma-separated list of targets, or a single target
129 in square brackets: The object must be an iterable with the same number of
130 items as there are targets in the target list, and the items are assigned,
131 from left to right, to the corresponding targets.
Georg Brandl02c30562007-09-07 17:52:53 +0000132
133 * If the target list contains one target prefixed with an asterisk, called a
Berker Peksag094c9c92016-05-18 08:44:29 +0300134 "starred" target: The object must be an iterable with at least as many items
Georg Brandl02c30562007-09-07 17:52:53 +0000135 as there are targets in the target list, minus one. The first items of the
Berker Peksag094c9c92016-05-18 08:44:29 +0300136 iterable are assigned, from left to right, to the targets before the starred
137 target. The final items of the iterable are assigned to the targets after
138 the starred target. A list of the remaining items in the iterable is then
Georg Brandl02c30562007-09-07 17:52:53 +0000139 assigned to the starred target (the list can be empty).
140
Berker Peksag094c9c92016-05-18 08:44:29 +0300141 * Else: The object must be an iterable with the same number of items as there
Georg Brandl02c30562007-09-07 17:52:53 +0000142 are targets in the target list, and the items are assigned, from left to
143 right, to the corresponding targets.
Georg Brandl116aa622007-08-15 14:28:22 +0000144
145Assignment of an object to a single target is recursively defined as follows.
146
147* If the target is an identifier (name):
148
Georg Brandl02c30562007-09-07 17:52:53 +0000149 * If the name does not occur in a :keyword:`global` or :keyword:`nonlocal`
150 statement in the current code block: the name is bound to the object in the
151 current local namespace.
Georg Brandl116aa622007-08-15 14:28:22 +0000152
Georg Brandl02c30562007-09-07 17:52:53 +0000153 * Otherwise: the name is bound to the object in the global namespace or the
154 outer namespace determined by :keyword:`nonlocal`, respectively.
Georg Brandl116aa622007-08-15 14:28:22 +0000155
Georg Brandl482b1512010-03-21 09:02:59 +0000156 .. index:: single: destructor
157
Georg Brandl02c30562007-09-07 17:52:53 +0000158 The name is rebound if it was already bound. This may cause the reference
159 count for the object previously bound to the name to reach zero, causing the
160 object to be deallocated and its destructor (if it has one) to be called.
Georg Brandl116aa622007-08-15 14:28:22 +0000161
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000162 .. index:: pair: attribute; assignment
163
Georg Brandl116aa622007-08-15 14:28:22 +0000164* If the target is an attribute reference: The primary expression in the
165 reference is evaluated. It should yield an object with assignable attributes;
Georg Brandl02c30562007-09-07 17:52:53 +0000166 if this is not the case, :exc:`TypeError` is raised. That object is then
167 asked to assign the assigned object to the given attribute; if it cannot
168 perform the assignment, it raises an exception (usually but not necessarily
Georg Brandl116aa622007-08-15 14:28:22 +0000169 :exc:`AttributeError`).
170
Georg Brandlee8783d2009-09-16 16:00:31 +0000171 .. _attr-target-note:
172
173 Note: If the object is a class instance and the attribute reference occurs on
174 both sides of the assignment operator, the RHS expression, ``a.x`` can access
175 either an instance attribute or (if no instance attribute exists) a class
176 attribute. The LHS target ``a.x`` is always set as an instance attribute,
177 creating it if necessary. Thus, the two occurrences of ``a.x`` do not
178 necessarily refer to the same attribute: if the RHS expression refers to a
179 class attribute, the LHS creates a new instance attribute as the target of the
180 assignment::
181
182 class Cls:
183 x = 3 # class variable
184 inst = Cls()
185 inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3
186
187 This description does not necessarily apply to descriptor attributes, such as
188 properties created with :func:`property`.
189
Georg Brandl116aa622007-08-15 14:28:22 +0000190 .. index::
191 pair: subscription; assignment
192 object: mutable
193
194* If the target is a subscription: The primary expression in the reference is
Georg Brandl02c30562007-09-07 17:52:53 +0000195 evaluated. It should yield either a mutable sequence object (such as a list)
196 or a mapping object (such as a dictionary). Next, the subscript expression is
Georg Brandl116aa622007-08-15 14:28:22 +0000197 evaluated.
198
199 .. index::
200 object: sequence
201 object: list
202
Georg Brandl02c30562007-09-07 17:52:53 +0000203 If the primary is a mutable sequence object (such as a list), the subscript
204 must yield an integer. If it is negative, the sequence's length is added to
205 it. The resulting value must be a nonnegative integer less than the
206 sequence's length, and the sequence is asked to assign the assigned object to
207 its item with that index. If the index is out of range, :exc:`IndexError` is
208 raised (assignment to a subscripted sequence cannot add new items to a list).
Georg Brandl116aa622007-08-15 14:28:22 +0000209
210 .. index::
211 object: mapping
212 object: dictionary
213
214 If the primary is a mapping object (such as a dictionary), the subscript must
215 have a type compatible with the mapping's key type, and the mapping is then
216 asked to create a key/datum pair which maps the subscript to the assigned
217 object. This can either replace an existing key/value pair with the same key
218 value, or insert a new key/value pair (if no key with the same value existed).
219
Georg Brandl02c30562007-09-07 17:52:53 +0000220 For user-defined objects, the :meth:`__setitem__` method is called with
221 appropriate arguments.
222
Georg Brandl116aa622007-08-15 14:28:22 +0000223 .. index:: pair: slicing; assignment
224
225* If the target is a slicing: The primary expression in the reference is
226 evaluated. It should yield a mutable sequence object (such as a list). The
227 assigned object should be a sequence object of the same type. Next, the lower
228 and upper bound expressions are evaluated, insofar they are present; defaults
Georg Brandl02c30562007-09-07 17:52:53 +0000229 are zero and the sequence's length. The bounds should evaluate to integers.
230 If either bound is negative, the sequence's length is added to it. The
231 resulting bounds are clipped to lie between zero and the sequence's length,
232 inclusive. Finally, the sequence object is asked to replace the slice with
233 the items of the assigned sequence. The length of the slice may be different
234 from the length of the assigned sequence, thus changing the length of the
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700235 target sequence, if the target sequence allows it.
Georg Brandl116aa622007-08-15 14:28:22 +0000236
Georg Brandl495f7b52009-10-27 15:28:25 +0000237.. impl-detail::
238
239 In the current implementation, the syntax for targets is taken to be the same
240 as for expressions, and invalid syntax is rejected during the code generation
241 phase, causing less detailed error messages.
Georg Brandl116aa622007-08-15 14:28:22 +0000242
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700243Although the definition of assignment implies that overlaps between the
Martin Panterf05641642016-05-08 13:48:10 +0000244left-hand side and the right-hand side are 'simultaneous' (for example ``a, b =
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700245b, a`` swaps two variables), overlaps *within* the collection of assigned-to
246variables occur left-to-right, sometimes resulting in confusion. For instance,
247the following program prints ``[0, 2]``::
Georg Brandl116aa622007-08-15 14:28:22 +0000248
249 x = [0, 1]
250 i = 0
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700251 i, x[i] = 1, 2 # i is updated, then x[i] is updated
Georg Brandl6911e3c2007-09-04 07:15:32 +0000252 print(x)
Georg Brandl116aa622007-08-15 14:28:22 +0000253
254
Georg Brandl02c30562007-09-07 17:52:53 +0000255.. seealso::
256
257 :pep:`3132` - Extended Iterable Unpacking
258 The specification for the ``*target`` feature.
259
260
Georg Brandl116aa622007-08-15 14:28:22 +0000261.. _augassign:
262
263Augmented assignment statements
264-------------------------------
265
266.. index::
267 pair: augmented; assignment
268 single: statement; assignment, augmented
Terry Jan Reedy9cc90262014-04-29 01:19:17 -0400269 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 single: >>=; augmented assignment
280 single: <<=; augmented assignment
Georg Brandl116aa622007-08-15 14:28:22 +0000281
282Augmented assignment is the combination, in a single statement, of a binary
283operation and an assignment statement:
284
285.. productionlist::
Benjamin Petersonb58dda72009-01-18 22:27:04 +0000286 augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
287 augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Benjamin Petersond51374e2014-04-09 23:55:56 -0400288 augop: "+=" | "-=" | "*=" | "@=" | "/=" | "//=" | "%=" | "**="
Georg Brandl116aa622007-08-15 14:28:22 +0000289 : | ">>=" | "<<=" | "&=" | "^=" | "|="
290
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700291(See section :ref:`primaries` for the syntax definitions of the last three
Georg Brandl116aa622007-08-15 14:28:22 +0000292symbols.)
293
294An augmented assignment evaluates the target (which, unlike normal assignment
295statements, cannot be an unpacking) and the expression list, performs the binary
296operation specific to the type of assignment on the two operands, and assigns
297the result to the original target. The target is only evaluated once.
298
299An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
3001`` to achieve a similar, but not exactly equal effect. In the augmented
301version, ``x`` is only evaluated once. Also, when possible, the actual operation
302is performed *in-place*, meaning that rather than creating a new object and
303assigning that to the target, the old object is modified instead.
304
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700305Unlike normal assignments, augmented assignments evaluate the left-hand side
306*before* evaluating the right-hand side. For example, ``a[i] += f(x)`` first
307looks-up ``a[i]``, then it evaluates ``f(x)`` and performs the addition, and
308lastly, it writes the result back to ``a[i]``.
309
Georg Brandl116aa622007-08-15 14:28:22 +0000310With the exception of assigning to tuples and multiple targets in a single
311statement, the assignment done by augmented assignment statements is handled the
312same way as normal assignments. Similarly, with the exception of the possible
313*in-place* behavior, the binary operation performed by augmented assignment is
314the same as the normal binary operations.
315
Georg Brandlee8783d2009-09-16 16:00:31 +0000316For targets which are attribute references, the same :ref:`caveat about class
317and instance attributes <attr-target-note>` applies as for regular assignments.
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700320.. _annassign:
321
322Annotated assignment statements
323-------------------------------
324
325.. index::
326 pair: annotated; assignment
327 single: statement; assignment, annotated
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200328 single: : (colon); annotated variable
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700329
330Annotation assignment is the combination, in a single statement,
331of a variable or attribute annotation and an optional assignment statement:
332
333.. productionlist::
334 annotated_assignment_stmt: `augtarget` ":" `expression` ["=" `expression`]
335
336The difference from normal :ref:`assignment` is that only single target and
337only single right hand side value is allowed.
338
339For simple names as assignment targets, if in class or module scope,
340the annotations are evaluated and stored in a special class or module
341attribute :attr:`__annotations__`
Guido van Rossum015d8742016-09-11 09:45:24 -0700342that is a dictionary mapping from variable names (mangled if private) to
343evaluated annotations. This attribute is writable and is automatically
344created at the start of class or module body execution, if annotations
345are found statically.
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700346
347For expressions as assignment targets, the annotations are evaluated if
348in class or module scope, but not stored.
349
350If a name is annotated in a function scope, then this name is local for
351that scope. Annotations are never evaluated and stored in function scopes.
352
353If the right hand side is present, an annotated
354assignment performs the actual assignment before evaluating annotations
355(where applicable). If the right hand side is not present for an expression
356target, then the interpreter evaluates the target except for the last
357:meth:`__setitem__` or :meth:`__setattr__` call.
358
359.. seealso::
360
Andrés Delfino0f14fc12018-10-19 20:31:15 -0300361 :pep:`526` - Syntax for Variable Annotations
362 The proposal that added syntax for annotating the types of variables
363 (including class variables and instance variables), instead of expressing
364 them through comments.
365
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700366 :pep:`484` - Type hints
Andrés Delfino0f14fc12018-10-19 20:31:15 -0300367 The proposal that added the :mod:`typing` module to provide a standard
368 syntax for type annotations that can be used in static analysis tools and
369 IDEs.
Yury Selivanovf8cb8a12016-09-08 20:50:03 -0700370
371
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000372.. _assert:
373
374The :keyword:`assert` statement
375===============================
376
377.. index::
378 statement: assert
379 pair: debugging; assertions
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200380 single: , (comma); expression list
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000381
382Assert statements are a convenient way to insert debugging assertions into a
383program:
384
385.. productionlist::
386 assert_stmt: "assert" `expression` ["," `expression`]
387
388The simple form, ``assert expression``, is equivalent to ::
389
390 if __debug__:
Serhiy Storchakadba90392016-05-10 12:01:23 +0300391 if not expression: raise AssertionError
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000392
393The extended form, ``assert expression1, expression2``, is equivalent to ::
394
395 if __debug__:
Serhiy Storchakadba90392016-05-10 12:01:23 +0300396 if not expression1: raise AssertionError(expression2)
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000397
398.. index::
399 single: __debug__
400 exception: AssertionError
401
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000402These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000403the built-in variables with those names. In the current implementation, the
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000404built-in variable :const:`__debug__` is ``True`` under normal circumstances,
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000405``False`` when optimization is requested (command line option -O). The current
406code generator emits no code for an assert statement when optimization is
407requested at compile time. Note that it is unnecessary to include the source
408code for the expression that failed in the error message; it will be displayed
409as part of the stack trace.
410
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000411Assignments to :const:`__debug__` are illegal. The value for the built-in variable
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000412is determined when the interpreter starts.
413
414
Georg Brandl116aa622007-08-15 14:28:22 +0000415.. _pass:
416
417The :keyword:`pass` statement
418=============================
419
Christian Heimesfaf2f632008-01-06 16:59:19 +0000420.. index::
421 statement: pass
422 pair: null; operation
Georg Brandl02c30562007-09-07 17:52:53 +0000423 pair: null; operation
Georg Brandl116aa622007-08-15 14:28:22 +0000424
425.. productionlist::
426 pass_stmt: "pass"
427
Georg Brandl116aa622007-08-15 14:28:22 +0000428:keyword:`pass` is a null operation --- when it is executed, nothing happens.
429It is useful as a placeholder when a statement is required syntactically, but no
430code needs to be executed, for example::
431
432 def f(arg): pass # a function that does nothing (yet)
433
434 class C: pass # a class with no methods (yet)
435
436
437.. _del:
438
439The :keyword:`del` statement
440============================
441
Christian Heimesfaf2f632008-01-06 16:59:19 +0000442.. index::
443 statement: del
444 pair: deletion; target
445 triple: deletion; target; list
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447.. productionlist::
448 del_stmt: "del" `target_list`
449
Georg Brandl116aa622007-08-15 14:28:22 +0000450Deletion is recursively defined very similar to the way assignment is defined.
Sandro Tosi75c71cc2011-12-24 19:56:04 +0100451Rather than spelling it out in full details, here are some hints.
Georg Brandl116aa622007-08-15 14:28:22 +0000452
453Deletion of a target list recursively deletes each target, from left to right.
454
455.. index::
456 statement: global
457 pair: unbinding; name
458
Georg Brandl02c30562007-09-07 17:52:53 +0000459Deletion of a name removes the binding of that name from the local or global
Georg Brandl116aa622007-08-15 14:28:22 +0000460namespace, depending on whether the name occurs in a :keyword:`global` statement
461in the same code block. If the name is unbound, a :exc:`NameError` exception
462will be raised.
463
Georg Brandl116aa622007-08-15 14:28:22 +0000464.. index:: pair: attribute; deletion
465
466Deletion of attribute references, subscriptions and slicings is passed to the
467primary object involved; deletion of a slicing is in general equivalent to
468assignment of an empty slice of the right type (but even this is determined by
469the sliced object).
470
Amaury Forgeot d'Arcba117ef2010-09-10 21:39:53 +0000471.. versionchanged:: 3.2
472 Previously it was illegal to delete a name from the local namespace if it
473 occurs as a free variable in a nested block.
474
Georg Brandl116aa622007-08-15 14:28:22 +0000475
476.. _return:
477
478The :keyword:`return` statement
479===============================
480
Christian Heimesfaf2f632008-01-06 16:59:19 +0000481.. index::
482 statement: return
483 pair: function; definition
484 pair: class; definition
Georg Brandl116aa622007-08-15 14:28:22 +0000485
486.. productionlist::
487 return_stmt: "return" [`expression_list`]
488
Georg Brandl116aa622007-08-15 14:28:22 +0000489:keyword:`return` may only occur syntactically nested in a function definition,
490not within a nested class definition.
491
492If an expression list is present, it is evaluated, else ``None`` is substituted.
493
494:keyword:`return` leaves the current function call with the expression list (or
495``None``) as return value.
496
497.. index:: keyword: finally
498
499When :keyword:`return` passes control out of a :keyword:`try` statement with a
500:keyword:`finally` clause, that :keyword:`finally` clause is executed before
501really leaving the function.
502
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000503In a generator function, the :keyword:`return` statement indicates that the
504generator is done and will cause :exc:`StopIteration` to be raised. The returned
505value (if any) is used as an argument to construct :exc:`StopIteration` and
506becomes the :attr:`StopIteration.value` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +0000507
Yury Selivanov03660042016-12-15 17:36:05 -0500508In an asynchronous generator function, an empty :keyword:`return` statement
509indicates that the asynchronous generator is done and will cause
510:exc:`StopAsyncIteration` to be raised. A non-empty :keyword:`return`
511statement is a syntax error in an asynchronous generator function.
Georg Brandl116aa622007-08-15 14:28:22 +0000512
513.. _yield:
514
515The :keyword:`yield` statement
516==============================
517
Christian Heimesfaf2f632008-01-06 16:59:19 +0000518.. index::
519 statement: yield
520 single: generator; function
521 single: generator; iterator
522 single: function; generator
523 exception: StopIteration
524
Georg Brandl116aa622007-08-15 14:28:22 +0000525.. productionlist::
526 yield_stmt: `yield_expression`
527
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500528A :keyword:`yield` statement is semantically equivalent to a :ref:`yield
529expression <yieldexpr>`. The yield statement can be used to omit the parentheses
530that would otherwise be required in the equivalent yield expression
531statement. For example, the yield statements ::
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000532
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500533 yield <expr>
534 yield from <expr>
Christian Heimes33fe8092008-04-13 13:53:33 +0000535
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500536are equivalent to the yield expression statements ::
Christian Heimes33fe8092008-04-13 13:53:33 +0000537
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500538 (yield <expr>)
539 (yield from <expr>)
Christian Heimes33fe8092008-04-13 13:53:33 +0000540
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500541Yield expressions and statements are only used when defining a :term:`generator`
542function, and are only used in the body of the generator function. Using yield
543in a function definition is sufficient to cause that definition to create a
544generator function instead of a normal function.
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000545
Benjamin Petersond1c85fd2014-01-26 22:52:08 -0500546For full details of :keyword:`yield` semantics, refer to the
547:ref:`yieldexpr` section.
Georg Brandl116aa622007-08-15 14:28:22 +0000548
549.. _raise:
550
551The :keyword:`raise` statement
552==============================
553
Christian Heimesfaf2f632008-01-06 16:59:19 +0000554.. index::
555 statement: raise
556 single: exception
557 pair: raising; exception
Georg Brandl1aea30a2008-07-19 15:51:07 +0000558 single: __traceback__ (exception attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000559
560.. productionlist::
Georg Brandle06de8b2008-05-05 21:42:51 +0000561 raise_stmt: "raise" [`expression` ["from" `expression`]]
Georg Brandl116aa622007-08-15 14:28:22 +0000562
563If no expressions are present, :keyword:`raise` re-raises the last exception
564that was active in the current scope. If no exception is active in the current
Sandro Tosib2794c82012-01-01 12:17:15 +0100565scope, a :exc:`RuntimeError` exception is raised indicating that this is an
566error.
Georg Brandl116aa622007-08-15 14:28:22 +0000567
Georg Brandl02c30562007-09-07 17:52:53 +0000568Otherwise, :keyword:`raise` evaluates the first expression as the exception
569object. It must be either a subclass or an instance of :class:`BaseException`.
570If it is a class, the exception instance will be obtained when needed by
571instantiating the class with no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000572
Georg Brandl02c30562007-09-07 17:52:53 +0000573The :dfn:`type` of the exception is the exception instance's class, the
574:dfn:`value` is the instance itself.
Georg Brandl116aa622007-08-15 14:28:22 +0000575
576.. index:: object: traceback
577
Georg Brandl02c30562007-09-07 17:52:53 +0000578A traceback object is normally created automatically when an exception is raised
Georg Brandle06de8b2008-05-05 21:42:51 +0000579and attached to it as the :attr:`__traceback__` attribute, which is writable.
580You can create an exception and set your own traceback in one step using the
581:meth:`with_traceback` exception method (which returns the same exception
582instance, with its traceback set to its argument), like so::
Georg Brandl02c30562007-09-07 17:52:53 +0000583
Benjamin Petersonb7851692009-02-16 16:15:34 +0000584 raise Exception("foo occurred").with_traceback(tracebackobj)
Georg Brandl02c30562007-09-07 17:52:53 +0000585
Georg Brandl1aea30a2008-07-19 15:51:07 +0000586.. index:: pair: exception; chaining
587 __cause__ (exception attribute)
588 __context__ (exception attribute)
Georg Brandl48310cd2009-01-03 21:18:54 +0000589
Georg Brandl1aea30a2008-07-19 15:51:07 +0000590The ``from`` clause is used for exception chaining: if given, the second
591*expression* must be another exception class or instance, which will then be
592attached to the raised exception as the :attr:`__cause__` attribute (which is
593writable). If the raised exception is not handled, both exceptions will be
594printed::
Georg Brandl02c30562007-09-07 17:52:53 +0000595
Georg Brandl1aea30a2008-07-19 15:51:07 +0000596 >>> try:
597 ... print(1 / 0)
598 ... except Exception as exc:
599 ... raise RuntimeError("Something bad happened") from exc
600 ...
601 Traceback (most recent call last):
602 File "<stdin>", line 2, in <module>
csabella763557e2017-05-20 02:48:28 -0400603 ZeroDivisionError: division by zero
Georg Brandl1aea30a2008-07-19 15:51:07 +0000604
605 The above exception was the direct cause of the following exception:
606
607 Traceback (most recent call last):
608 File "<stdin>", line 4, in <module>
609 RuntimeError: Something bad happened
610
611A similar mechanism works implicitly if an exception is raised inside an
Georg Brandla4c8c472014-10-31 10:38:49 +0100612exception handler or a :keyword:`finally` clause: the previous exception is then
613attached as the new exception's :attr:`__context__` attribute::
Georg Brandl1aea30a2008-07-19 15:51:07 +0000614
615 >>> try:
616 ... print(1 / 0)
617 ... except:
618 ... raise RuntimeError("Something bad happened")
619 ...
620 Traceback (most recent call last):
621 File "<stdin>", line 2, in <module>
csabella763557e2017-05-20 02:48:28 -0400622 ZeroDivisionError: division by zero
Georg Brandl1aea30a2008-07-19 15:51:07 +0000623
624 During handling of the above exception, another exception occurred:
625
626 Traceback (most recent call last):
627 File "<stdin>", line 4, in <module>
628 RuntimeError: Something bad happened
Georg Brandl116aa622007-08-15 14:28:22 +0000629
csabella763557e2017-05-20 02:48:28 -0400630Exception chaining can be explicitly suppressed by specifying :const:`None` in
631the ``from`` clause::
632
633 >>> try:
634 ... print(1 / 0)
635 ... except:
636 ... raise RuntimeError("Something bad happened") from None
637 ...
638 Traceback (most recent call last):
639 File "<stdin>", line 4, in <module>
640 RuntimeError: Something bad happened
641
Georg Brandl116aa622007-08-15 14:28:22 +0000642Additional information on exceptions can be found in section :ref:`exceptions`,
643and information about handling exceptions is in section :ref:`try`.
644
csabella763557e2017-05-20 02:48:28 -0400645.. versionchanged:: 3.3
Mariatta9efad1e2017-05-30 15:26:42 -0700646 :const:`None` is now permitted as ``Y`` in ``raise X from Y``.
csabella763557e2017-05-20 02:48:28 -0400647
648.. versionadded:: 3.3
649 The ``__suppress_context__`` attribute to suppress automatic display of the
Mariatta9efad1e2017-05-30 15:26:42 -0700650 exception context.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
652.. _break:
653
654The :keyword:`break` statement
655==============================
656
Christian Heimesfaf2f632008-01-06 16:59:19 +0000657.. index::
658 statement: break
659 statement: for
660 statement: while
661 pair: loop; statement
Georg Brandl116aa622007-08-15 14:28:22 +0000662
663.. productionlist::
664 break_stmt: "break"
665
Georg Brandl116aa622007-08-15 14:28:22 +0000666:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
667:keyword:`while` loop, but not nested in a function or class definition within
668that loop.
669
670.. index:: keyword: else
Georg Brandl02c30562007-09-07 17:52:53 +0000671 pair: loop control; target
Georg Brandl116aa622007-08-15 14:28:22 +0000672
673It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
674clause if the loop has one.
675
Georg Brandl116aa622007-08-15 14:28:22 +0000676If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
677target keeps its current value.
678
679.. index:: keyword: finally
680
681When :keyword:`break` passes control out of a :keyword:`try` statement with a
682:keyword:`finally` clause, that :keyword:`finally` clause is executed before
683really leaving the loop.
684
685
686.. _continue:
687
688The :keyword:`continue` statement
689=================================
690
Christian Heimesfaf2f632008-01-06 16:59:19 +0000691.. index::
692 statement: continue
693 statement: for
694 statement: while
695 pair: loop; statement
696 keyword: finally
Georg Brandl116aa622007-08-15 14:28:22 +0000697
698.. productionlist::
699 continue_stmt: "continue"
700
Georg Brandl116aa622007-08-15 14:28:22 +0000701:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
Serhiy Storchakafe2bbb12018-03-18 09:56:52 +0200702:keyword:`while` loop, but not nested in a function or class definition within
703that loop. It continues with the next cycle of the nearest enclosing loop.
Georg Brandl116aa622007-08-15 14:28:22 +0000704
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000705When :keyword:`continue` passes control out of a :keyword:`try` statement with a
706:keyword:`finally` clause, that :keyword:`finally` clause is executed before
707really starting the next loop cycle.
708
Georg Brandl116aa622007-08-15 14:28:22 +0000709
710.. _import:
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000711.. _from:
Georg Brandl116aa622007-08-15 14:28:22 +0000712
713The :keyword:`import` statement
714===============================
715
716.. index::
717 statement: import
718 single: module; importing
719 pair: name; binding
720 keyword: from
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300721 keyword: as
722 exception: ImportError
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200723 single: , (comma); import statement
Georg Brandl116aa622007-08-15 14:28:22 +0000724
725.. productionlist::
Andrés Delfinocaccca782018-07-07 17:24:46 -0300726 import_stmt: "import" `module` ["as" `identifier`] ("," `module` ["as" `identifier`])*
727 : | "from" `relative_module` "import" `identifier` ["as" `identifier`]
728 : ("," `identifier` ["as" `identifier`])*
729 : | "from" `relative_module` "import" "(" `identifier` ["as" `identifier`]
730 : ("," `identifier` ["as" `identifier`])* [","] ")"
Georg Brandl116aa622007-08-15 14:28:22 +0000731 : | "from" `module` "import" "*"
732 module: (`identifier` ".")* `identifier`
733 relative_module: "."* `module` | "."+
Georg Brandl116aa622007-08-15 14:28:22 +0000734
Nick Coghlane3376ef2012-08-02 22:02:35 +1000735The basic import statement (no :keyword:`from` clause) is executed in two
736steps:
Barry Warsawdadebab2012-07-31 16:03:09 -0400737
Nick Coghlane3376ef2012-08-02 22:02:35 +1000738#. find a module, loading and initializing it if necessary
739#. define a name or names in the local namespace for the scope where
740 the :keyword:`import` statement occurs.
Georg Brandl116aa622007-08-15 14:28:22 +0000741
Nick Coghlane3376ef2012-08-02 22:02:35 +1000742When the statement contains multiple clauses (separated by
743commas) the two steps are carried out separately for each clause, just
Ned Deilycec95812016-05-17 21:44:46 -0400744as though the clauses had been separated out into individual import
Nick Coghlane3376ef2012-08-02 22:02:35 +1000745statements.
Georg Brandl116aa622007-08-15 14:28:22 +0000746
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700747The details of the first step, finding and loading modules are described in
Nick Coghlane3376ef2012-08-02 22:02:35 +1000748greater detail in the section on the :ref:`import system <importsystem>`,
749which also describes the various types of packages and modules that can
750be imported, as well as all the hooks that can be used to customize
751the import system. Note that failures in this step may indicate either
752that the module could not be located, *or* that an error occurred while
753initializing the module, which includes execution of the module's code.
Georg Brandl116aa622007-08-15 14:28:22 +0000754
Nick Coghlane3376ef2012-08-02 22:02:35 +1000755If the requested module is retrieved successfully, it will be made
756available in the local namespace in one of three ways:
757
Terry Jan Reedy7c895ed2014-04-29 00:58:56 -0400758.. index:: single: as; import statement
759
Nick Coghlane3376ef2012-08-02 22:02:35 +1000760* If the module name is followed by :keyword:`as`, then the name
761 following :keyword:`as` is bound directly to the imported module.
762* If no other name is specified, and the module being imported is a top
763 level module, the module's name is bound in the local namespace as a
764 reference to the imported module
765* If the module being imported is *not* a top level module, then the name
766 of the top level package that contains the module is bound in the local
767 namespace as a reference to the top level package. The imported module
768 must be accessed using its full qualified name rather than directly
769
Georg Brandl116aa622007-08-15 14:28:22 +0000770
771.. index::
772 pair: name; binding
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300773 single: from; import statement
Georg Brandl116aa622007-08-15 14:28:22 +0000774
Nick Coghlane3376ef2012-08-02 22:02:35 +1000775The :keyword:`from` form uses a slightly more complex process:
776
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700777#. find the module specified in the :keyword:`from` clause, loading and
Nick Coghlane3376ef2012-08-02 22:02:35 +1000778 initializing it if necessary;
779#. for each of the identifiers specified in the :keyword:`import` clauses:
780
781 #. check if the imported module has an attribute by that name
782 #. if not, attempt to import a submodule with that name and then
783 check the imported module again for that attribute
784 #. if the attribute is not found, :exc:`ImportError` is raised.
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700785 #. otherwise, a reference to that value is stored in the local namespace,
Nick Coghlane3376ef2012-08-02 22:02:35 +1000786 using the name in the :keyword:`as` clause if it is present,
787 otherwise using the attribute name
788
789Examples::
790
791 import foo # foo imported and bound locally
792 import foo.bar.baz # foo.bar.baz imported, foo bound locally
793 import foo.bar.baz as fbb # foo.bar.baz imported and bound as fbb
794 from foo.bar import baz # foo.bar.baz imported and bound as baz
795 from foo import attr # foo imported and foo.attr bound as attr
796
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200797.. index:: single: * (asterisk); import statement
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300798
Nick Coghlane3376ef2012-08-02 22:02:35 +1000799If the list of identifiers is replaced by a star (``'*'``), all public
800names defined in the module are bound in the local namespace for the scope
801where the :keyword:`import` statement occurs.
802
803.. index:: single: __all__ (optional module attribute)
804
805The *public names* defined by a module are determined by checking the module's
806namespace for a variable named ``__all__``; if defined, it must be a sequence
807of strings which are names defined or imported by that module. The names
808given in ``__all__`` are all considered public and are required to exist. If
809``__all__`` is not defined, the set of public names includes all names found
810in the module's namespace which do not begin with an underscore character
811(``'_'``). ``__all__`` should contain the entire public API. It is intended
812to avoid accidentally exporting items that are not part of the API (such as
813library modules which were imported and used within the module).
814
Georg Brandla4c8c472014-10-31 10:38:49 +0100815The wild card form of import --- ``from module import *`` --- is only allowed at
816the module level. Attempting to use it in class or function definitions will
817raise a :exc:`SyntaxError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000818
819.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000820 single: relative; import
Georg Brandl116aa622007-08-15 14:28:22 +0000821
Brett Cannone43b0602009-03-21 03:11:16 +0000822When specifying what module to import you do not have to specify the absolute
823name of the module. When a module or package is contained within another
824package it is possible to make a relative import within the same top package
825without having to mention the package name. By using leading dots in the
826specified module or package after :keyword:`from` you can specify how high to
827traverse up the current package hierarchy without specifying exact names. One
828leading dot means the current package where the module making the import
829exists. Two dots means up one package level. Three dots is up two levels, etc.
830So if you execute ``from . import mod`` from a module in the ``pkg`` package
831then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
Florent Xicluna0c8414e2010-09-03 20:23:40 +0000832import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
Brett Cannone43b0602009-03-21 03:11:16 +0000833The specification for relative imports is contained within :pep:`328`.
Georg Brandl5b318c02008-08-03 09:47:27 +0000834
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000835:func:`importlib.import_module` is provided to support applications that
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700836determine dynamically the modules to be loaded.
Georg Brandl116aa622007-08-15 14:28:22 +0000837
838
839.. _future:
840
841Future statements
842-----------------
843
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300844.. index::
845 pair: future; statement
846 single: __future__; future statement
Georg Brandl116aa622007-08-15 14:28:22 +0000847
848A :dfn:`future statement` is a directive to the compiler that a particular
849module should be compiled using syntax or semantics that will be available in a
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700850specified future release of Python where the feature becomes standard.
851
852The future statement is intended to ease migration to future versions of Python
853that introduce incompatible changes to the language. It allows use of the new
854features on a per-module basis before the release in which the feature becomes
855standard.
Georg Brandl116aa622007-08-15 14:28:22 +0000856
857.. productionlist:: *
Andrés Delfinocaccca782018-07-07 17:24:46 -0300858 future_stmt: "from" "__future__" "import" `feature` ["as" `identifier`]
859 : ("," `feature` ["as" `identifier`])*
860 : | "from" "__future__" "import" "(" `feature` ["as" `identifier`]
861 : ("," `feature` ["as" `identifier`])* [","] ")"
862 feature: `identifier`
Georg Brandl116aa622007-08-15 14:28:22 +0000863
864A future statement must appear near the top of the module. The only lines that
865can appear before a future statement are:
866
867* the module docstring (if any),
868* comments,
869* blank lines, and
870* other future statements.
871
Guido van Rossum95e4d582018-01-26 08:20:18 -0800872The only feature in Python 3.7 that requires using the future statement is
873``annotations``.
Georg Brandl02c30562007-09-07 17:52:53 +0000874
Guido van Rossum95e4d582018-01-26 08:20:18 -0800875All historical features enabled by the future statement are still recognized
876by Python 3. The list includes ``absolute_import``, ``division``,
877``generators``, ``generator_stop``, ``unicode_literals``,
878``print_function``, ``nested_scopes`` and ``with_statement``. They are
879all redundant because they are always enabled, and only kept for
880backwards compatibility.
Georg Brandl116aa622007-08-15 14:28:22 +0000881
882A future statement is recognized and treated specially at compile time: Changes
883to the semantics of core constructs are often implemented by generating
884different code. It may even be the case that a new feature introduces new
885incompatible syntax (such as a new reserved word), in which case the compiler
886may need to parse the module differently. Such decisions cannot be pushed off
887until runtime.
888
889For any given release, the compiler knows which feature names have been defined,
890and raises a compile-time error if a future statement contains a feature not
891known to it.
892
893The direct runtime semantics are the same as for any import statement: there is
894a standard module :mod:`__future__`, described later, and it will be imported in
895the usual way at the time the future statement is executed.
896
897The interesting runtime semantics depend on the specific feature enabled by the
898future statement.
899
900Note that there is nothing special about the statement::
901
902 import __future__ [as name]
903
904That is not a future statement; it's an ordinary import statement with no
905special semantics or syntax restrictions.
906
Georg Brandl22b34312009-07-26 14:54:51 +0000907Code compiled by calls to the built-in functions :func:`exec` and :func:`compile`
Georg Brandl02c30562007-09-07 17:52:53 +0000908that occur in a module :mod:`M` containing a future statement will, by default,
909use the new syntax or semantics associated with the future statement. This can
910be controlled by optional arguments to :func:`compile` --- see the documentation
911of that function for details.
Georg Brandl116aa622007-08-15 14:28:22 +0000912
913A future statement typed at an interactive interpreter prompt will take effect
914for the rest of the interpreter session. If an interpreter is started with the
915:option:`-i` option, is passed a script name to execute, and the script includes
916a future statement, it will be in effect in the interactive session started
917after the script is executed.
918
Georg Brandlff2ad0e2009-04-27 16:51:45 +0000919.. seealso::
920
921 :pep:`236` - Back to the __future__
922 The original proposal for the __future__ mechanism.
923
Georg Brandl116aa622007-08-15 14:28:22 +0000924
925.. _global:
926
927The :keyword:`global` statement
928===============================
929
Christian Heimesfaf2f632008-01-06 16:59:19 +0000930.. index::
931 statement: global
932 triple: global; name; binding
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200933 single: , (comma); identifier list
Georg Brandl116aa622007-08-15 14:28:22 +0000934
935.. productionlist::
936 global_stmt: "global" `identifier` ("," `identifier`)*
937
Georg Brandl116aa622007-08-15 14:28:22 +0000938The :keyword:`global` statement is a declaration which holds for the entire
939current code block. It means that the listed identifiers are to be interpreted
940as globals. It would be impossible to assign to a global variable without
941:keyword:`global`, although free variables may refer to globals without being
942declared global.
943
944Names listed in a :keyword:`global` statement must not be used in the same code
945block textually preceding that :keyword:`global` statement.
946
947Names listed in a :keyword:`global` statement must not be defined as formal
948parameters or in a :keyword:`for` loop control target, :keyword:`class`
Guido van Rossum6cff8742016-09-09 09:36:26 -0700949definition, function definition, :keyword:`import` statement, or variable
950annotation.
Georg Brandl116aa622007-08-15 14:28:22 +0000951
Georg Brandl495f7b52009-10-27 15:28:25 +0000952.. impl-detail::
953
kms708478d59aca2017-09-28 15:54:48 -0400954 The current implementation does not enforce some of these restrictions, but
Georg Brandl495f7b52009-10-27 15:28:25 +0000955 programs should not abuse this freedom, as future implementations may enforce
956 them or silently change the meaning of the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000957
958.. index::
959 builtin: exec
960 builtin: eval
961 builtin: compile
962
Jim Fasarakis-Hilliardf34c68502017-05-08 14:36:29 +0300963**Programmer's note:** :keyword:`global` is a directive to the parser. It
Georg Brandl116aa622007-08-15 14:28:22 +0000964applies only to code parsed at the same time as the :keyword:`global` statement.
965In particular, a :keyword:`global` statement contained in a string or code
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000966object supplied to the built-in :func:`exec` function does not affect the code
Georg Brandl116aa622007-08-15 14:28:22 +0000967block *containing* the function call, and code contained in such a string is
968unaffected by :keyword:`global` statements in the code containing the function
969call. The same applies to the :func:`eval` and :func:`compile` functions.
970
Georg Brandl02c30562007-09-07 17:52:53 +0000971
972.. _nonlocal:
973
974The :keyword:`nonlocal` statement
975=================================
976
977.. index:: statement: nonlocal
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200978 single: , (comma); identifier list
Georg Brandl02c30562007-09-07 17:52:53 +0000979
980.. productionlist::
981 nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*
982
Georg Brandlc5d98b42007-12-04 18:11:03 +0000983.. XXX add when implemented
Martin Panter0c0da482016-06-12 01:46:50 +0000984 : ["=" (`target_list` "=")+ starred_expression]
Georg Brandl06788c92009-01-03 21:31:47 +0000985 : | "nonlocal" identifier augop expression_list
Georg Brandlc5d98b42007-12-04 18:11:03 +0000986
Georg Brandl48310cd2009-01-03 21:18:54 +0000987The :keyword:`nonlocal` statement causes the listed identifiers to refer to
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700988previously bound variables in the nearest enclosing scope excluding globals.
989This is important because the default behavior for binding is to search the
990local namespace first. The statement allows encapsulated code to rebind
991variables outside of the local scope besides the global (module) scope.
Georg Brandlc5d98b42007-12-04 18:11:03 +0000992
Georg Brandlc5d98b42007-12-04 18:11:03 +0000993.. XXX not implemented
994 The :keyword:`nonlocal` statement may prepend an assignment or augmented
995 assignment, but not an expression.
996
Raymond Hettingeraa7886d2014-05-26 22:20:37 -0700997Names listed in a :keyword:`nonlocal` statement, unlike those listed in a
Georg Brandlc5d98b42007-12-04 18:11:03 +0000998:keyword:`global` statement, must refer to pre-existing bindings in an
999enclosing scope (the scope in which a new binding should be created cannot
1000be determined unambiguously).
1001
Georg Brandl48310cd2009-01-03 21:18:54 +00001002Names listed in a :keyword:`nonlocal` statement must not collide with
Georg Brandlc5d98b42007-12-04 18:11:03 +00001003pre-existing bindings in the local scope.
1004
1005.. seealso::
1006
1007 :pep:`3104` - Access to Names in Outer Scopes
1008 The specification for the :keyword:`nonlocal` statement.