blob: a8ec49520617d4368164058a95f797587084c68e [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
10Simple statements are comprised within a single logical line. Several simple
11statements may occur on a single line separated by semicolons. The syntax for
12simple statements is:
13
14.. productionlist::
15 simple_stmt: `expression_stmt`
16 : | `assert_stmt`
17 : | `assignment_stmt`
18 : | `augmented_assignment_stmt`
19 : | `pass_stmt`
20 : | `del_stmt`
21 : | `return_stmt`
22 : | `yield_stmt`
23 : | `raise_stmt`
24 : | `break_stmt`
25 : | `continue_stmt`
26 : | `import_stmt`
27 : | `global_stmt`
Georg Brandl02c30562007-09-07 17:52:53 +000028 : | `nonlocal_stmt`
Georg Brandl116aa622007-08-15 14:28:22 +000029
30
31.. _exprstmts:
32
33Expression statements
34=====================
35
Christian Heimesfaf2f632008-01-06 16:59:19 +000036.. index::
37 pair: expression; statement
38 pair: expression; list
Georg Brandl02c30562007-09-07 17:52:53 +000039.. index:: pair: expression; list
Georg Brandl116aa622007-08-15 14:28:22 +000040
41Expression statements are used (mostly interactively) to compute and write a
42value, or (usually) to call a procedure (a function that returns no meaningful
43result; in Python, procedures return the value ``None``). Other uses of
44expression statements are allowed and occasionally useful. The syntax for an
45expression statement is:
46
47.. productionlist::
48 expression_stmt: `expression_list`
49
Georg Brandl116aa622007-08-15 14:28:22 +000050An expression statement evaluates the expression list (which may be a single
51expression).
52
53.. index::
54 builtin: repr
55 object: None
56 pair: string; conversion
57 single: output
58 pair: standard; output
59 pair: writing; values
60 pair: procedure; call
61
62In interactive mode, if the value is not ``None``, it is converted to a string
63using the built-in :func:`repr` function and the resulting string is written to
Georg Brandl02c30562007-09-07 17:52:53 +000064standard output on a line by itself (except if the result is ``None``, so that
65procedure calls do not cause any output.)
Georg Brandl116aa622007-08-15 14:28:22 +000066
Georg Brandl116aa622007-08-15 14:28:22 +000067.. _assignment:
68
69Assignment statements
70=====================
71
72.. index::
73 pair: assignment; statement
74 pair: binding; name
75 pair: rebinding; name
76 object: mutable
77 pair: attribute; assignment
78
79Assignment statements are used to (re)bind names to values and to modify
80attributes or items of mutable objects:
81
82.. productionlist::
83 assignment_stmt: (`target_list` "=")+ (`expression_list` | `yield_expression`)
84 target_list: `target` ("," `target`)* [","]
85 target: `identifier`
86 : | "(" `target_list` ")"
87 : | "[" `target_list` "]"
88 : | `attributeref`
89 : | `subscription`
90 : | `slicing`
Georg Brandl02c30562007-09-07 17:52:53 +000091 : | "*" `target`
Georg Brandl116aa622007-08-15 14:28:22 +000092
93(See section :ref:`primaries` for the syntax definitions for the last three
94symbols.)
95
Georg Brandl116aa622007-08-15 14:28:22 +000096An assignment statement evaluates the expression list (remember that this can be
97a single expression or a comma-separated list, the latter yielding a tuple) and
98assigns the single resulting object to each of the target lists, from left to
99right.
100
101.. index::
102 single: target
103 pair: target; list
104
105Assignment is defined recursively depending on the form of the target (list).
106When a target is part of a mutable object (an attribute reference, subscription
107or slicing), the mutable object must ultimately perform the assignment and
108decide about its validity, and may raise an exception if the assignment is
109unacceptable. The rules observed by various types and the exceptions raised are
110given with the definition of the object types (see section :ref:`types`).
111
112.. index:: triple: target; list; assignment
113
Georg Brandl02c30562007-09-07 17:52:53 +0000114Assignment of an object to a target list, optionally enclosed in parentheses or
115square brackets, is recursively defined as follows.
Georg Brandl116aa622007-08-15 14:28:22 +0000116
117* If the target list is a single target: The object is assigned to that target.
118
Benjamin Petersond75fcb42009-02-19 04:22:03 +0000119* If the target list is a comma-separated list of targets: The object must be an
120 iterable with the same number of items as there are targets in the target list,
121 and the items are assigned, from left to right, to the corresponding targets.
122 (This rule is relaxed as of Python 1.5; in earlier versions, the object had to
123 be a tuple. Since strings are sequences, an assignment like ``a, b = "xy"`` is
124 now legal as long as the string has the right length.)
Georg Brandl02c30562007-09-07 17:52:53 +0000125
126 * If the target list contains one target prefixed with an asterisk, called a
127 "starred" target: The object must be a sequence with at least as many items
128 as there are targets in the target list, minus one. The first items of the
129 sequence are assigned, from left to right, to the targets before the starred
130 target. The final items of the sequence are assigned to the targets after
131 the starred target. A list of the remaining items in the sequence is then
132 assigned to the starred target (the list can be empty).
133
134 * Else: The object must be a sequence with the same number of items as there
135 are targets in the target list, and the items are assigned, from left to
136 right, to the corresponding targets.
Georg Brandl116aa622007-08-15 14:28:22 +0000137
138Assignment of an object to a single target is recursively defined as follows.
139
140* If the target is an identifier (name):
141
Georg Brandl02c30562007-09-07 17:52:53 +0000142 * If the name does not occur in a :keyword:`global` or :keyword:`nonlocal`
143 statement in the current code block: the name is bound to the object in the
144 current local namespace.
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Georg Brandl02c30562007-09-07 17:52:53 +0000146 * Otherwise: the name is bound to the object in the global namespace or the
147 outer namespace determined by :keyword:`nonlocal`, respectively.
Georg Brandl116aa622007-08-15 14:28:22 +0000148
Georg Brandl02c30562007-09-07 17:52:53 +0000149 The name is rebound if it was already bound. This may cause the reference
150 count for the object previously bound to the name to reach zero, causing the
151 object to be deallocated and its destructor (if it has one) to be called.
Georg Brandl116aa622007-08-15 14:28:22 +0000152
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000153 .. index:: single: destructor
154
155 The name is rebound if it was already bound. This may cause the reference count
156 for the object previously bound to the name to reach zero, causing the object to
157 be deallocated and its destructor (if it has one) to be called.
158
159* If the target is a target list enclosed in parentheses or in square brackets:
Benjamin Petersond75fcb42009-02-19 04:22:03 +0000160 The object must be an iterable with the same number of items as there are
161 targets in the target list, and its items are assigned, from left to right,
162 to the corresponding targets.
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000163
164 .. index:: pair: attribute; assignment
165
Georg Brandl116aa622007-08-15 14:28:22 +0000166* If the target is an attribute reference: The primary expression in the
167 reference is evaluated. It should yield an object with assignable attributes;
Georg Brandl02c30562007-09-07 17:52:53 +0000168 if this is not the case, :exc:`TypeError` is raised. That object is then
169 asked to assign the assigned object to the given attribute; if it cannot
170 perform the assignment, it raises an exception (usually but not necessarily
Georg Brandl116aa622007-08-15 14:28:22 +0000171 :exc:`AttributeError`).
172
Georg Brandlee8783d2009-09-16 16:00:31 +0000173 .. _attr-target-note:
174
175 Note: If the object is a class instance and the attribute reference occurs on
176 both sides of the assignment operator, the RHS expression, ``a.x`` can access
177 either an instance attribute or (if no instance attribute exists) a class
178 attribute. The LHS target ``a.x`` is always set as an instance attribute,
179 creating it if necessary. Thus, the two occurrences of ``a.x`` do not
180 necessarily refer to the same attribute: if the RHS expression refers to a
181 class attribute, the LHS creates a new instance attribute as the target of the
182 assignment::
183
184 class Cls:
185 x = 3 # class variable
186 inst = Cls()
187 inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3
188
189 This description does not necessarily apply to descriptor attributes, such as
190 properties created with :func:`property`.
191
Georg Brandl116aa622007-08-15 14:28:22 +0000192 .. index::
193 pair: subscription; assignment
194 object: mutable
195
196* If the target is a subscription: The primary expression in the reference is
Georg Brandl02c30562007-09-07 17:52:53 +0000197 evaluated. It should yield either a mutable sequence object (such as a list)
198 or a mapping object (such as a dictionary). Next, the subscript expression is
Georg Brandl116aa622007-08-15 14:28:22 +0000199 evaluated.
200
201 .. index::
202 object: sequence
203 object: list
204
Georg Brandl02c30562007-09-07 17:52:53 +0000205 If the primary is a mutable sequence object (such as a list), the subscript
206 must yield an integer. If it is negative, the sequence's length is added to
207 it. The resulting value must be a nonnegative integer less than the
208 sequence's length, and the sequence is asked to assign the assigned object to
209 its item with that index. If the index is out of range, :exc:`IndexError` is
210 raised (assignment to a subscripted sequence cannot add new items to a list).
Georg Brandl116aa622007-08-15 14:28:22 +0000211
212 .. index::
213 object: mapping
214 object: dictionary
215
216 If the primary is a mapping object (such as a dictionary), the subscript must
217 have a type compatible with the mapping's key type, and the mapping is then
218 asked to create a key/datum pair which maps the subscript to the assigned
219 object. This can either replace an existing key/value pair with the same key
220 value, or insert a new key/value pair (if no key with the same value existed).
221
Georg Brandl02c30562007-09-07 17:52:53 +0000222 For user-defined objects, the :meth:`__setitem__` method is called with
223 appropriate arguments.
224
Georg Brandl116aa622007-08-15 14:28:22 +0000225 .. index:: pair: slicing; assignment
226
227* If the target is a slicing: The primary expression in the reference is
228 evaluated. It should yield a mutable sequence object (such as a list). The
229 assigned object should be a sequence object of the same type. Next, the lower
230 and upper bound expressions are evaluated, insofar they are present; defaults
Georg Brandl02c30562007-09-07 17:52:53 +0000231 are zero and the sequence's length. The bounds should evaluate to integers.
232 If either bound is negative, the sequence's length is added to it. The
233 resulting bounds are clipped to lie between zero and the sequence's length,
234 inclusive. Finally, the sequence object is asked to replace the slice with
235 the items of the assigned sequence. The length of the slice may be different
236 from the length of the assigned sequence, thus changing the length of the
237 target sequence, if the object allows it.
Georg Brandl116aa622007-08-15 14:28:22 +0000238
239(In the current implementation, the syntax for targets is taken to be the same
240as for expressions, and invalid syntax is rejected during the code generation
241phase, causing less detailed error messages.)
242
243WARNING: Although the definition of assignment implies that overlaps between the
244left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
245swaps two variables), overlaps *within* the collection of assigned-to variables
246are not safe! For instance, the following program prints ``[0, 2]``::
247
248 x = [0, 1]
249 i = 0
250 i, x[i] = 1, 2
Georg Brandl6911e3c2007-09-04 07:15:32 +0000251 print(x)
Georg Brandl116aa622007-08-15 14:28:22 +0000252
253
Georg Brandl02c30562007-09-07 17:52:53 +0000254.. seealso::
255
256 :pep:`3132` - Extended Iterable Unpacking
257 The specification for the ``*target`` feature.
258
259
Georg Brandl116aa622007-08-15 14:28:22 +0000260.. _augassign:
261
262Augmented assignment statements
263-------------------------------
264
265.. index::
266 pair: augmented; assignment
267 single: statement; assignment, augmented
268
269Augmented assignment is the combination, in a single statement, of a binary
270operation and an assignment statement:
271
272.. productionlist::
Benjamin Petersonb58dda72009-01-18 22:27:04 +0000273 augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
274 augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000275 augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
Georg Brandl116aa622007-08-15 14:28:22 +0000276 : | ">>=" | "<<=" | "&=" | "^=" | "|="
277
278(See section :ref:`primaries` for the syntax definitions for the last three
279symbols.)
280
281An augmented assignment evaluates the target (which, unlike normal assignment
282statements, cannot be an unpacking) and the expression list, performs the binary
283operation specific to the type of assignment on the two operands, and assigns
284the result to the original target. The target is only evaluated once.
285
286An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
2871`` to achieve a similar, but not exactly equal effect. In the augmented
288version, ``x`` is only evaluated once. Also, when possible, the actual operation
289is performed *in-place*, meaning that rather than creating a new object and
290assigning that to the target, the old object is modified instead.
291
292With the exception of assigning to tuples and multiple targets in a single
293statement, the assignment done by augmented assignment statements is handled the
294same way as normal assignments. Similarly, with the exception of the possible
295*in-place* behavior, the binary operation performed by augmented assignment is
296the same as the normal binary operations.
297
Georg Brandlee8783d2009-09-16 16:00:31 +0000298For targets which are attribute references, the same :ref:`caveat about class
299and instance attributes <attr-target-note>` applies as for regular assignments.
Georg Brandl116aa622007-08-15 14:28:22 +0000300
301
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000302.. _assert:
303
304The :keyword:`assert` statement
305===============================
306
307.. index::
308 statement: assert
309 pair: debugging; assertions
310
311Assert statements are a convenient way to insert debugging assertions into a
312program:
313
314.. productionlist::
315 assert_stmt: "assert" `expression` ["," `expression`]
316
317The simple form, ``assert expression``, is equivalent to ::
318
319 if __debug__:
320 if not expression: raise AssertionError
321
322The extended form, ``assert expression1, expression2``, is equivalent to ::
323
324 if __debug__:
Georg Brandl18a499d2007-12-29 10:57:11 +0000325 if not expression1: raise AssertionError(expression2)
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000326
327.. index::
328 single: __debug__
329 exception: AssertionError
330
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000331These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000332the built-in variables with those names. In the current implementation, the
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000333built-in variable :const:`__debug__` is ``True`` under normal circumstances,
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000334``False`` when optimization is requested (command line option -O). The current
335code generator emits no code for an assert statement when optimization is
336requested at compile time. Note that it is unnecessary to include the source
337code for the expression that failed in the error message; it will be displayed
338as part of the stack trace.
339
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000340Assignments to :const:`__debug__` are illegal. The value for the built-in variable
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000341is determined when the interpreter starts.
342
343
Georg Brandl116aa622007-08-15 14:28:22 +0000344.. _pass:
345
346The :keyword:`pass` statement
347=============================
348
Christian Heimesfaf2f632008-01-06 16:59:19 +0000349.. index::
350 statement: pass
351 pair: null; operation
Georg Brandl02c30562007-09-07 17:52:53 +0000352 pair: null; operation
Georg Brandl116aa622007-08-15 14:28:22 +0000353
354.. productionlist::
355 pass_stmt: "pass"
356
Georg Brandl116aa622007-08-15 14:28:22 +0000357:keyword:`pass` is a null operation --- when it is executed, nothing happens.
358It is useful as a placeholder when a statement is required syntactically, but no
359code needs to be executed, for example::
360
361 def f(arg): pass # a function that does nothing (yet)
362
363 class C: pass # a class with no methods (yet)
364
365
366.. _del:
367
368The :keyword:`del` statement
369============================
370
Christian Heimesfaf2f632008-01-06 16:59:19 +0000371.. index::
372 statement: del
373 pair: deletion; target
374 triple: deletion; target; list
Georg Brandl116aa622007-08-15 14:28:22 +0000375
376.. productionlist::
377 del_stmt: "del" `target_list`
378
Georg Brandl116aa622007-08-15 14:28:22 +0000379Deletion is recursively defined very similar to the way assignment is defined.
380Rather that spelling it out in full details, here are some hints.
381
382Deletion of a target list recursively deletes each target, from left to right.
383
384.. index::
385 statement: global
386 pair: unbinding; name
387
Georg Brandl02c30562007-09-07 17:52:53 +0000388Deletion of a name removes the binding of that name from the local or global
Georg Brandl116aa622007-08-15 14:28:22 +0000389namespace, depending on whether the name occurs in a :keyword:`global` statement
390in the same code block. If the name is unbound, a :exc:`NameError` exception
391will be raised.
392
393.. index:: pair: free; variable
394
395It is illegal to delete a name from the local namespace if it occurs as a free
396variable in a nested block.
397
398.. index:: pair: attribute; deletion
399
400Deletion of attribute references, subscriptions and slicings is passed to the
401primary object involved; deletion of a slicing is in general equivalent to
402assignment of an empty slice of the right type (but even this is determined by
403the sliced object).
404
405
406.. _return:
407
408The :keyword:`return` statement
409===============================
410
Christian Heimesfaf2f632008-01-06 16:59:19 +0000411.. index::
412 statement: return
413 pair: function; definition
414 pair: class; definition
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416.. productionlist::
417 return_stmt: "return" [`expression_list`]
418
Georg Brandl116aa622007-08-15 14:28:22 +0000419:keyword:`return` may only occur syntactically nested in a function definition,
420not within a nested class definition.
421
422If an expression list is present, it is evaluated, else ``None`` is substituted.
423
424:keyword:`return` leaves the current function call with the expression list (or
425``None``) as return value.
426
427.. index:: keyword: finally
428
429When :keyword:`return` passes control out of a :keyword:`try` statement with a
430:keyword:`finally` clause, that :keyword:`finally` clause is executed before
431really leaving the function.
432
433In a generator function, the :keyword:`return` statement is not allowed to
434include an :token:`expression_list`. In that context, a bare :keyword:`return`
435indicates that the generator is done and will cause :exc:`StopIteration` to be
436raised.
437
438
439.. _yield:
440
441The :keyword:`yield` statement
442==============================
443
Christian Heimesfaf2f632008-01-06 16:59:19 +0000444.. index::
445 statement: yield
446 single: generator; function
447 single: generator; iterator
448 single: function; generator
449 exception: StopIteration
450
Georg Brandl116aa622007-08-15 14:28:22 +0000451.. productionlist::
452 yield_stmt: `yield_expression`
453
Christian Heimesfaf2f632008-01-06 16:59:19 +0000454The :keyword:`yield` statement is only used when defining a generator function,
455and is only used in the body of the generator function. Using a :keyword:`yield`
456statement in a function definition is sufficient to cause that definition to
457create a generator function instead of a normal function.
Christian Heimes33fe8092008-04-13 13:53:33 +0000458When a generator function is called, it returns an iterator known as a generator
459iterator, or more commonly, a generator. The body of the generator function is
Georg Brandl6520d822009-02-05 11:01:54 +0000460executed by calling the :func:`next` function on the generator repeatedly until
461it raises an exception.
Christian Heimes33fe8092008-04-13 13:53:33 +0000462
463When a :keyword:`yield` statement is executed, the state of the generator is
464frozen and the value of :token:`expression_list` is returned to :meth:`next`'s
465caller. By "frozen" we mean that all local state is retained, including the
466current bindings of local variables, the instruction pointer, and the internal
Georg Brandl6520d822009-02-05 11:01:54 +0000467evaluation stack: enough information is saved so that the next time :func:`next`
Christian Heimes33fe8092008-04-13 13:53:33 +0000468is invoked, the function can proceed exactly as if the :keyword:`yield`
469statement were just another external call.
470
Georg Brandle6bcc912008-05-12 18:05:20 +0000471The :keyword:`yield` statement is allowed in the :keyword:`try` clause of a
472:keyword:`try` ... :keyword:`finally` construct. If the generator is not
473resumed before it is finalized (by reaching a zero reference count or by being
474garbage collected), the generator-iterator's :meth:`close` method will be
475called, allowing any pending :keyword:`finally` clauses to execute.
Christian Heimes33fe8092008-04-13 13:53:33 +0000476
477.. seealso::
478
479 :pep:`0255` - Simple Generators
480 The proposal for adding generators and the :keyword:`yield` statement to Python.
481
482 :pep:`0342` - Coroutines via Enhanced Generators
483 The proposal that, among other generator enhancements, proposed allowing
484 :keyword:`yield` to appear inside a :keyword:`try` ... :keyword:`finally` block.
485
Georg Brandl116aa622007-08-15 14:28:22 +0000486
487.. _raise:
488
489The :keyword:`raise` statement
490==============================
491
Christian Heimesfaf2f632008-01-06 16:59:19 +0000492.. index::
493 statement: raise
494 single: exception
495 pair: raising; exception
Georg Brandl1aea30a2008-07-19 15:51:07 +0000496 single: __traceback__ (exception attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000497
498.. productionlist::
Georg Brandle06de8b2008-05-05 21:42:51 +0000499 raise_stmt: "raise" [`expression` ["from" `expression`]]
Georg Brandl116aa622007-08-15 14:28:22 +0000500
501If no expressions are present, :keyword:`raise` re-raises the last exception
502that was active in the current scope. If no exception is active in the current
503scope, a :exc:`TypeError` exception is raised indicating that this is an error
Alexandre Vassalottif260e442008-05-11 19:59:59 +0000504(if running under IDLE, a :exc:`queue.Empty` exception is raised instead).
Georg Brandl116aa622007-08-15 14:28:22 +0000505
Georg Brandl02c30562007-09-07 17:52:53 +0000506Otherwise, :keyword:`raise` evaluates the first expression as the exception
507object. It must be either a subclass or an instance of :class:`BaseException`.
508If it is a class, the exception instance will be obtained when needed by
509instantiating the class with no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000510
Georg Brandl02c30562007-09-07 17:52:53 +0000511The :dfn:`type` of the exception is the exception instance's class, the
512:dfn:`value` is the instance itself.
Georg Brandl116aa622007-08-15 14:28:22 +0000513
514.. index:: object: traceback
515
Georg Brandl02c30562007-09-07 17:52:53 +0000516A traceback object is normally created automatically when an exception is raised
Georg Brandle06de8b2008-05-05 21:42:51 +0000517and attached to it as the :attr:`__traceback__` attribute, which is writable.
518You can create an exception and set your own traceback in one step using the
519:meth:`with_traceback` exception method (which returns the same exception
520instance, with its traceback set to its argument), like so::
Georg Brandl02c30562007-09-07 17:52:53 +0000521
Benjamin Petersonb7851692009-02-16 16:15:34 +0000522 raise Exception("foo occurred").with_traceback(tracebackobj)
Georg Brandl02c30562007-09-07 17:52:53 +0000523
Georg Brandl1aea30a2008-07-19 15:51:07 +0000524.. index:: pair: exception; chaining
525 __cause__ (exception attribute)
526 __context__ (exception attribute)
Georg Brandl48310cd2009-01-03 21:18:54 +0000527
Georg Brandl1aea30a2008-07-19 15:51:07 +0000528The ``from`` clause is used for exception chaining: if given, the second
529*expression* must be another exception class or instance, which will then be
530attached to the raised exception as the :attr:`__cause__` attribute (which is
531writable). If the raised exception is not handled, both exceptions will be
532printed::
Georg Brandl02c30562007-09-07 17:52:53 +0000533
Georg Brandl1aea30a2008-07-19 15:51:07 +0000534 >>> try:
535 ... print(1 / 0)
536 ... except Exception as exc:
537 ... raise RuntimeError("Something bad happened") from exc
538 ...
539 Traceback (most recent call last):
540 File "<stdin>", line 2, in <module>
541 ZeroDivisionError: int division or modulo by zero
542
543 The above exception was the direct cause of the following exception:
544
545 Traceback (most recent call last):
546 File "<stdin>", line 4, in <module>
547 RuntimeError: Something bad happened
548
549A similar mechanism works implicitly if an exception is raised inside an
550exception handler: the previous exception is then attached as the new
551exception's :attr:`__context__` attribute::
552
553 >>> try:
554 ... print(1 / 0)
555 ... except:
556 ... raise RuntimeError("Something bad happened")
557 ...
558 Traceback (most recent call last):
559 File "<stdin>", line 2, in <module>
560 ZeroDivisionError: int division or modulo by zero
561
562 During handling of the above exception, another exception occurred:
563
564 Traceback (most recent call last):
565 File "<stdin>", line 4, in <module>
566 RuntimeError: Something bad happened
Georg Brandl116aa622007-08-15 14:28:22 +0000567
568Additional information on exceptions can be found in section :ref:`exceptions`,
569and information about handling exceptions is in section :ref:`try`.
570
571
572.. _break:
573
574The :keyword:`break` statement
575==============================
576
Christian Heimesfaf2f632008-01-06 16:59:19 +0000577.. index::
578 statement: break
579 statement: for
580 statement: while
581 pair: loop; statement
Georg Brandl116aa622007-08-15 14:28:22 +0000582
583.. productionlist::
584 break_stmt: "break"
585
Georg Brandl116aa622007-08-15 14:28:22 +0000586:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
587:keyword:`while` loop, but not nested in a function or class definition within
588that loop.
589
590.. index:: keyword: else
Georg Brandl02c30562007-09-07 17:52:53 +0000591 pair: loop control; target
Georg Brandl116aa622007-08-15 14:28:22 +0000592
593It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
594clause if the loop has one.
595
Georg Brandl116aa622007-08-15 14:28:22 +0000596If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
597target keeps its current value.
598
599.. index:: keyword: finally
600
601When :keyword:`break` passes control out of a :keyword:`try` statement with a
602:keyword:`finally` clause, that :keyword:`finally` clause is executed before
603really leaving the loop.
604
605
606.. _continue:
607
608The :keyword:`continue` statement
609=================================
610
Christian Heimesfaf2f632008-01-06 16:59:19 +0000611.. index::
612 statement: continue
613 statement: for
614 statement: while
615 pair: loop; statement
616 keyword: finally
Georg Brandl116aa622007-08-15 14:28:22 +0000617
618.. productionlist::
619 continue_stmt: "continue"
620
Georg Brandl116aa622007-08-15 14:28:22 +0000621:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
622:keyword:`while` loop, but not nested in a function or class definition or
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000623:keyword:`finally` clause within that loop. It continues with the next
Georg Brandl116aa622007-08-15 14:28:22 +0000624cycle of the nearest enclosing loop.
625
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000626When :keyword:`continue` passes control out of a :keyword:`try` statement with a
627:keyword:`finally` clause, that :keyword:`finally` clause is executed before
628really starting the next loop cycle.
629
Georg Brandl116aa622007-08-15 14:28:22 +0000630
631.. _import:
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000632.. _from:
Georg Brandl116aa622007-08-15 14:28:22 +0000633
634The :keyword:`import` statement
635===============================
636
637.. index::
638 statement: import
639 single: module; importing
640 pair: name; binding
641 keyword: from
642
643.. productionlist::
644 import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
645 : | "from" `relative_module` "import" `identifier` ["as" `name`]
646 : ( "," `identifier` ["as" `name`] )*
647 : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
648 : ( "," `identifier` ["as" `name`] )* [","] ")"
649 : | "from" `module` "import" "*"
650 module: (`identifier` ".")* `identifier`
651 relative_module: "."* `module` | "."+
652 name: `identifier`
653
654Import statements are executed in two steps: (1) find a module, and initialize
655it if necessary; (2) define a name or names in the local namespace (of the scope
Brett Cannone43b0602009-03-21 03:11:16 +0000656where the :keyword:`import` statement occurs). The statement comes in two
657forms differing on whether it uses the :keyword:`from` keyword. The first form
658(without :keyword:`from`) repeats these steps for each identifier in the list.
659The form with :keyword:`from` performs step (1) once, and then performs step
660(2) repeatedly. For a reference implementation of step (1), see the
661:mod:`importlib` module.
Georg Brandl116aa622007-08-15 14:28:22 +0000662
663.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000664 single: package
Georg Brandl116aa622007-08-15 14:28:22 +0000665
Brett Cannone43b0602009-03-21 03:11:16 +0000666To understand how step (1) occurs, one must first understand how Python handles
667hierarchical naming of modules. To help organize modules and provide a
668hierarchy in naming, Python has a concept of packages. A package can contain
669other packages and modules while modules cannot contain other modules or
670packages. From a file system perspective, packages are directories and modules
671are files. The original `specification for packages
672<http://www.python.org/doc/essays/packages.html>`_ is still available to read,
673although minor details have changed since the writing of that document.
Georg Brandl116aa622007-08-15 14:28:22 +0000674
675.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000676 single: sys.modules
Georg Brandl116aa622007-08-15 14:28:22 +0000677
Brett Cannone43b0602009-03-21 03:11:16 +0000678Once the name of the module is known (unless otherwise specified, the term
679"module" will refer to both packages and modules), searching
680for the module or package can begin. The first place checked is
681:data:`sys.modules`, the cache of all modules that have been imported
Brett Cannon757df6e2009-08-30 04:00:12 +0000682previously. If the module is found there then it is used in step (2) of import
683unless :keyword:`None` is found in :data:`sys.modules`, in which case
684:exc:`ImportError` is raised.
Brett Cannone43b0602009-03-21 03:11:16 +0000685
686.. index::
687 single: sys.meta_path
688 single: finder
689 pair: finder; find_module
690 single: __path__
691
692If the module is not found in the cache, then :data:`sys.meta_path` is searched
693(the specification for :data:`sys.meta_path` can be found in :pep:`302`).
694The object is a list of :term:`finder` objects which are queried in order as to
695whether they know how to load the module by calling their :meth:`find_module`
696method with the name of the module. If the module happens to be contained
697within a package (as denoted by the existence of a dot in the name), then a
698second argument to :meth:`find_module` is given as the value of the
699:attr:`__path__` attribute from the parent package (everything up to the last
700dot in the name of the module being imported). If a finder can find the module
701it returns a :term:`loader` (discussed later) or returns :keyword:`None`.
702
703.. index::
704 single: sys.path_hooks
705 single: sys.path_importer_cache
706 single: sys.path
707
708If none of the finders on :data:`sys.meta_path` are able to find the module
709then some implicitly defined finders are queried. Implementations of Python
710vary in what implicit meta path finders are defined. The one they all do
711define, though, is one that handles :data:`sys.path_hooks`,
712:data:`sys.path_importer_cache`, and :data:`sys.path`.
713
714The implicit finder searches for the requested module in the "paths" specified
715in one of two places ("paths" do not have to be file system paths). If the
716module being imported is supposed to be contained within a package then the
717second argument passed to :meth:`find_module`, :attr:`__path__` on the parent
718package, is used as the source of paths. If the module is not contained in a
719package then :data:`sys.path` is used as the source of paths.
720
721Once the source of paths is chosen it is iterated over to find a finder that
722can handle that path. The dict at :data:`sys.path_importer_cache` caches
723finders for paths and is checked for a finder. If the path does not have a
724finder cached then :data:`sys.path_hooks` is searched by calling each object in
725the list with a single argument of the path, returning a finder or raises
726:exc:`ImportError`. If a finder is returned then it is cached in
727:data:`sys.path_importer_cache` and then used for that path entry. If no finder
728can be found but the path exists then a value of :keyword:`None` is
729stored in :data:`sys.path_importer_cache` to signify that an implicit,
730file-based finder that handles modules stored as individual files should be
731used for that path. If the path does not exist then a finder which always
732returns :keyword:`None` is placed in the cache for the path.
733
734.. index::
735 single: loader
736 pair: loader; load_module
737 exception: ImportError
738
739If no finder can find the module then :exc:`ImportError` is raised. Otherwise
740some finder returned a loader whose :meth:`load_module` method is called with
741the name of the module to load (see :pep:`302` for the original definition of
742loaders). A loader has several responsibilities to perform on a module it
743loads. First, if the module already exists in :data:`sys.modules` (a
744possibility if the loader is called outside of the import machinery) then it
745is to use that module for initialization and not a new module. But if the
746module does not exist in :data:`sys.modules` then it is to be added to that
747dict before initialization begins. If an error occurs during loading of the
748module and it was added to :data:`sys.modules` it is to be removed from the
749dict. If an error occurs but the module was already in :data:`sys.modules` it
750is left in the dict.
751
752.. index::
753 single: __name__
754 single: __file__
755 single: __path__
756 single: __package__
757 single: __loader__
758
759The loader must set several attributes on the module. :data:`__name__` is to be
760set to the name of the module. :data:`__file__` is to be the "path" to the file
761unless the module is built-in (and thus listed in
762:data:`sys.builtin_module_names`) in which case the attribute is not set.
763If what is being imported is a package then :data:`__path__` is to be set to a
764list of paths to be searched when looking for modules and packages contained
765within the package being imported. :data:`__package__` is optional but should
766be set to the name of package that contains the module or package (the empty
767string is used for module not contained in a package). :data:`__loader__` is
768also optional but should be set to the loader object that is loading the
769module.
770
771.. index::
772 exception: ImportError
773
774If an error occurs during loading then the loader raises :exc:`ImportError` if
775some other exception is not already being propagated. Otherwise the loader
776returns the module that was loaded and initialized.
Georg Brandl116aa622007-08-15 14:28:22 +0000777
778When step (1) finishes without raising an exception, step (2) can begin.
779
780The first form of :keyword:`import` statement binds the module name in the local
781namespace to the module object, and then goes on to import the next identifier,
782if any. If the module name is followed by :keyword:`as`, the name following
783:keyword:`as` is used as the local name for the module.
784
785.. index::
786 pair: name; binding
787 exception: ImportError
788
789The :keyword:`from` form does not bind the module name: it goes through the list
790of identifiers, looks each one of them up in the module found in step (1), and
791binds the name in the local namespace to the object thus found. As with the
792first form of :keyword:`import`, an alternate local name can be supplied by
793specifying ":keyword:`as` localname". If a name is not found,
794:exc:`ImportError` is raised. If the list of identifiers is replaced by a star
795(``'*'``), all public names defined in the module are bound in the local
796namespace of the :keyword:`import` statement..
797
798.. index:: single: __all__ (optional module attribute)
799
800The *public names* defined by a module are determined by checking the module's
801namespace for a variable named ``__all__``; if defined, it must be a sequence of
802strings which are names defined or imported by that module. The names given in
803``__all__`` are all considered public and are required to exist. If ``__all__``
804is not defined, the set of public names includes all names found in the module's
805namespace which do not begin with an underscore character (``'_'``).
806``__all__`` should contain the entire public API. It is intended to avoid
807accidentally exporting items that are not part of the API (such as library
808modules which were imported and used within the module).
809
Benjamin Peterson9611b5e2009-03-25 21:50:43 +0000810The :keyword:`from` form with ``*`` may only occur in a module scope. The wild
811card form of import --- ``import *`` --- is only allowed at the module level.
Ezio Melotti4bbfa2a2009-09-16 01:18:27 +0000812Attempting to use it in class or function definitions will raise a
Benjamin Peterson9611b5e2009-03-25 21:50:43 +0000813:exc:`SyntaxError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000814
815.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000816 single: relative; import
Georg Brandl116aa622007-08-15 14:28:22 +0000817
Brett Cannone43b0602009-03-21 03:11:16 +0000818When specifying what module to import you do not have to specify the absolute
819name of the module. When a module or package is contained within another
820package it is possible to make a relative import within the same top package
821without having to mention the package name. By using leading dots in the
822specified module or package after :keyword:`from` you can specify how high to
823traverse up the current package hierarchy without specifying exact names. One
824leading dot means the current package where the module making the import
825exists. Two dots means up one package level. Three dots is up two levels, etc.
826So if you execute ``from . import mod`` from a module in the ``pkg`` package
827then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
828imprt mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
829The specification for relative imports is contained within :pep:`328`.
Georg Brandl5b318c02008-08-03 09:47:27 +0000830
Benjamin Petersonfa0d7032009-06-01 22:42:33 +0000831:func:`importlib.import_module` is provided to support applications that
832determine which modules need to be loaded dynamically.
Georg Brandl116aa622007-08-15 14:28:22 +0000833
834
835.. _future:
836
837Future statements
838-----------------
839
840.. index:: pair: future; statement
841
842A :dfn:`future statement` is a directive to the compiler that a particular
843module should be compiled using syntax or semantics that will be available in a
844specified future release of Python. The future statement is intended to ease
845migration to future versions of Python that introduce incompatible changes to
846the language. It allows use of the new features on a per-module basis before
847the release in which the feature becomes standard.
848
849.. productionlist:: *
850 future_statement: "from" "__future__" "import" feature ["as" name]
851 : ("," feature ["as" name])*
852 : | "from" "__future__" "import" "(" feature ["as" name]
853 : ("," feature ["as" name])* [","] ")"
854 feature: identifier
855 name: identifier
856
857A future statement must appear near the top of the module. The only lines that
858can appear before a future statement are:
859
860* the module docstring (if any),
861* comments,
862* blank lines, and
863* other future statements.
864
Georg Brandl02c30562007-09-07 17:52:53 +0000865.. XXX change this if future is cleaned out
866
867The features recognized by Python 3.0 are ``absolute_import``, ``division``,
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000868``generators``, ``unicode_literals``, ``print_function``, ``nested_scopes`` and
869``with_statement``. They are all redundant because they are always enabled, and
870only kept for backwards compatibility.
Georg Brandl116aa622007-08-15 14:28:22 +0000871
872A future statement is recognized and treated specially at compile time: Changes
873to the semantics of core constructs are often implemented by generating
874different code. It may even be the case that a new feature introduces new
875incompatible syntax (such as a new reserved word), in which case the compiler
876may need to parse the module differently. Such decisions cannot be pushed off
877until runtime.
878
879For any given release, the compiler knows which feature names have been defined,
880and raises a compile-time error if a future statement contains a feature not
881known to it.
882
883The direct runtime semantics are the same as for any import statement: there is
884a standard module :mod:`__future__`, described later, and it will be imported in
885the usual way at the time the future statement is executed.
886
887The interesting runtime semantics depend on the specific feature enabled by the
888future statement.
889
890Note that there is nothing special about the statement::
891
892 import __future__ [as name]
893
894That is not a future statement; it's an ordinary import statement with no
895special semantics or syntax restrictions.
896
Georg Brandl22b34312009-07-26 14:54:51 +0000897Code compiled by calls to the built-in functions :func:`exec` and :func:`compile`
Georg Brandl02c30562007-09-07 17:52:53 +0000898that occur in a module :mod:`M` containing a future statement will, by default,
899use the new syntax or semantics associated with the future statement. This can
900be controlled by optional arguments to :func:`compile` --- see the documentation
901of that function for details.
Georg Brandl116aa622007-08-15 14:28:22 +0000902
903A future statement typed at an interactive interpreter prompt will take effect
904for the rest of the interpreter session. If an interpreter is started with the
905:option:`-i` option, is passed a script name to execute, and the script includes
906a future statement, it will be in effect in the interactive session started
907after the script is executed.
908
Georg Brandlff2ad0e2009-04-27 16:51:45 +0000909.. seealso::
910
911 :pep:`236` - Back to the __future__
912 The original proposal for the __future__ mechanism.
913
Georg Brandl116aa622007-08-15 14:28:22 +0000914
915.. _global:
916
917The :keyword:`global` statement
918===============================
919
Christian Heimesfaf2f632008-01-06 16:59:19 +0000920.. index::
921 statement: global
922 triple: global; name; binding
Georg Brandl116aa622007-08-15 14:28:22 +0000923
924.. productionlist::
925 global_stmt: "global" `identifier` ("," `identifier`)*
926
Georg Brandl116aa622007-08-15 14:28:22 +0000927The :keyword:`global` statement is a declaration which holds for the entire
928current code block. It means that the listed identifiers are to be interpreted
929as globals. It would be impossible to assign to a global variable without
930:keyword:`global`, although free variables may refer to globals without being
931declared global.
932
933Names listed in a :keyword:`global` statement must not be used in the same code
934block textually preceding that :keyword:`global` statement.
935
936Names listed in a :keyword:`global` statement must not be defined as formal
937parameters or in a :keyword:`for` loop control target, :keyword:`class`
938definition, function definition, or :keyword:`import` statement.
939
940(The current implementation does not enforce the latter two restrictions, but
941programs should not abuse this freedom, as future implementations may enforce
942them or silently change the meaning of the program.)
943
944.. index::
945 builtin: exec
946 builtin: eval
947 builtin: compile
948
949**Programmer's note:** the :keyword:`global` is a directive to the parser. It
950applies only to code parsed at the same time as the :keyword:`global` statement.
951In particular, a :keyword:`global` statement contained in a string or code
952object supplied to the builtin :func:`exec` function does not affect the code
953block *containing* the function call, and code contained in such a string is
954unaffected by :keyword:`global` statements in the code containing the function
955call. The same applies to the :func:`eval` and :func:`compile` functions.
956
Georg Brandl02c30562007-09-07 17:52:53 +0000957
958.. _nonlocal:
959
960The :keyword:`nonlocal` statement
961=================================
962
963.. index:: statement: nonlocal
964
965.. productionlist::
966 nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*
967
Georg Brandlc5d98b42007-12-04 18:11:03 +0000968.. XXX add when implemented
Georg Brandl06788c92009-01-03 21:31:47 +0000969 : ["=" (`target_list` "=")+ expression_list]
970 : | "nonlocal" identifier augop expression_list
Georg Brandlc5d98b42007-12-04 18:11:03 +0000971
Georg Brandl48310cd2009-01-03 21:18:54 +0000972The :keyword:`nonlocal` statement causes the listed identifiers to refer to
973previously bound variables in the nearest enclosing scope. This is important
974because the default behavior for binding is to search the local namespace
Georg Brandlc5d98b42007-12-04 18:11:03 +0000975first. The statement allows encapsulated code to rebind variables outside of
976the local scope besides the global (module) scope.
977
Georg Brandlc5d98b42007-12-04 18:11:03 +0000978.. XXX not implemented
979 The :keyword:`nonlocal` statement may prepend an assignment or augmented
980 assignment, but not an expression.
981
982Names listed in a :keyword:`nonlocal` statement, unlike to those listed in a
983:keyword:`global` statement, must refer to pre-existing bindings in an
984enclosing scope (the scope in which a new binding should be created cannot
985be determined unambiguously).
986
Georg Brandl48310cd2009-01-03 21:18:54 +0000987Names listed in a :keyword:`nonlocal` statement must not collide with
Georg Brandlc5d98b42007-12-04 18:11:03 +0000988pre-existing bindings in the local scope.
989
990.. seealso::
991
992 :pep:`3104` - Access to Names in Outer Scopes
993 The specification for the :keyword:`nonlocal` statement.
Georg Brandl02c30562007-09-07 17:52:53 +0000994
995
Georg Brandl116aa622007-08-15 14:28:22 +0000996.. rubric:: Footnotes
997
998.. [#] It may occur within an :keyword:`except` or :keyword:`else` clause. The
Georg Brandlc5d98b42007-12-04 18:11:03 +0000999 restriction on occurring in the :keyword:`try` clause is implementor's
1000 laziness and will eventually be lifted.