blob: b3fc89175d5d7c8a5637a3ce40150dffbaaa4ea5 [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 Brandlb044b2a2009-09-16 16:05:59 +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
Georg Brandl628e6f92009-10-27 20:24:45 +0000239.. impl-detail::
240
241 In the current implementation, the syntax for targets is taken to be the same
242 as for expressions, and invalid syntax is rejected during the code generation
243 phase, causing less detailed error messages.
Georg Brandl116aa622007-08-15 14:28:22 +0000244
245WARNING: Although the definition of assignment implies that overlaps between the
246left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
247swaps two variables), overlaps *within* the collection of assigned-to variables
248are not safe! For instance, the following program prints ``[0, 2]``::
249
250 x = [0, 1]
251 i = 0
252 i, x[i] = 1, 2
Georg Brandl6911e3c2007-09-04 07:15:32 +0000253 print(x)
Georg Brandl116aa622007-08-15 14:28:22 +0000254
255
Georg Brandl02c30562007-09-07 17:52:53 +0000256.. seealso::
257
258 :pep:`3132` - Extended Iterable Unpacking
259 The specification for the ``*target`` feature.
260
261
Georg Brandl116aa622007-08-15 14:28:22 +0000262.. _augassign:
263
264Augmented assignment statements
265-------------------------------
266
267.. index::
268 pair: augmented; assignment
269 single: statement; assignment, augmented
270
271Augmented assignment is the combination, in a single statement, of a binary
272operation and an assignment statement:
273
274.. productionlist::
Benjamin Petersonb58dda72009-01-18 22:27:04 +0000275 augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
276 augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000277 augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
Georg Brandl116aa622007-08-15 14:28:22 +0000278 : | ">>=" | "<<=" | "&=" | "^=" | "|="
279
280(See section :ref:`primaries` for the syntax definitions for the last three
281symbols.)
282
283An augmented assignment evaluates the target (which, unlike normal assignment
284statements, cannot be an unpacking) and the expression list, performs the binary
285operation specific to the type of assignment on the two operands, and assigns
286the result to the original target. The target is only evaluated once.
287
288An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
2891`` to achieve a similar, but not exactly equal effect. In the augmented
290version, ``x`` is only evaluated once. Also, when possible, the actual operation
291is performed *in-place*, meaning that rather than creating a new object and
292assigning that to the target, the old object is modified instead.
293
294With the exception of assigning to tuples and multiple targets in a single
295statement, the assignment done by augmented assignment statements is handled the
296same way as normal assignments. Similarly, with the exception of the possible
297*in-place* behavior, the binary operation performed by augmented assignment is
298the same as the normal binary operations.
299
Georg Brandlb044b2a2009-09-16 16:05:59 +0000300For targets which are attribute references, the same :ref:`caveat about class
301and instance attributes <attr-target-note>` applies as for regular assignments.
Georg Brandl116aa622007-08-15 14:28:22 +0000302
303
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000304.. _assert:
305
306The :keyword:`assert` statement
307===============================
308
309.. index::
310 statement: assert
311 pair: debugging; assertions
312
313Assert statements are a convenient way to insert debugging assertions into a
314program:
315
316.. productionlist::
317 assert_stmt: "assert" `expression` ["," `expression`]
318
319The simple form, ``assert expression``, is equivalent to ::
320
321 if __debug__:
322 if not expression: raise AssertionError
323
324The extended form, ``assert expression1, expression2``, is equivalent to ::
325
326 if __debug__:
Georg Brandl18a499d2007-12-29 10:57:11 +0000327 if not expression1: raise AssertionError(expression2)
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000328
329.. index::
330 single: __debug__
331 exception: AssertionError
332
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000333These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000334the built-in variables with those names. In the current implementation, the
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000335built-in variable :const:`__debug__` is ``True`` under normal circumstances,
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000336``False`` when optimization is requested (command line option -O). The current
337code generator emits no code for an assert statement when optimization is
338requested at compile time. Note that it is unnecessary to include the source
339code for the expression that failed in the error message; it will be displayed
340as part of the stack trace.
341
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000342Assignments to :const:`__debug__` are illegal. The value for the built-in variable
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000343is determined when the interpreter starts.
344
345
Georg Brandl116aa622007-08-15 14:28:22 +0000346.. _pass:
347
348The :keyword:`pass` statement
349=============================
350
Christian Heimesfaf2f632008-01-06 16:59:19 +0000351.. index::
352 statement: pass
353 pair: null; operation
Georg Brandl02c30562007-09-07 17:52:53 +0000354 pair: null; operation
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. productionlist::
357 pass_stmt: "pass"
358
Georg Brandl116aa622007-08-15 14:28:22 +0000359:keyword:`pass` is a null operation --- when it is executed, nothing happens.
360It is useful as a placeholder when a statement is required syntactically, but no
361code needs to be executed, for example::
362
363 def f(arg): pass # a function that does nothing (yet)
364
365 class C: pass # a class with no methods (yet)
366
367
368.. _del:
369
370The :keyword:`del` statement
371============================
372
Christian Heimesfaf2f632008-01-06 16:59:19 +0000373.. index::
374 statement: del
375 pair: deletion; target
376 triple: deletion; target; list
Georg Brandl116aa622007-08-15 14:28:22 +0000377
378.. productionlist::
379 del_stmt: "del" `target_list`
380
Georg Brandl116aa622007-08-15 14:28:22 +0000381Deletion is recursively defined very similar to the way assignment is defined.
382Rather that spelling it out in full details, here are some hints.
383
384Deletion of a target list recursively deletes each target, from left to right.
385
386.. index::
387 statement: global
388 pair: unbinding; name
389
Georg Brandl02c30562007-09-07 17:52:53 +0000390Deletion of a name removes the binding of that name from the local or global
Georg Brandl116aa622007-08-15 14:28:22 +0000391namespace, depending on whether the name occurs in a :keyword:`global` statement
392in the same code block. If the name is unbound, a :exc:`NameError` exception
393will be raised.
394
395.. index:: pair: free; variable
396
397It is illegal to delete a name from the local namespace if it occurs as a free
398variable in a nested block.
399
400.. index:: pair: attribute; deletion
401
402Deletion of attribute references, subscriptions and slicings is passed to the
403primary object involved; deletion of a slicing is in general equivalent to
404assignment of an empty slice of the right type (but even this is determined by
405the sliced object).
406
407
408.. _return:
409
410The :keyword:`return` statement
411===============================
412
Christian Heimesfaf2f632008-01-06 16:59:19 +0000413.. index::
414 statement: return
415 pair: function; definition
416 pair: class; definition
Georg Brandl116aa622007-08-15 14:28:22 +0000417
418.. productionlist::
419 return_stmt: "return" [`expression_list`]
420
Georg Brandl116aa622007-08-15 14:28:22 +0000421:keyword:`return` may only occur syntactically nested in a function definition,
422not within a nested class definition.
423
424If an expression list is present, it is evaluated, else ``None`` is substituted.
425
426:keyword:`return` leaves the current function call with the expression list (or
427``None``) as return value.
428
429.. index:: keyword: finally
430
431When :keyword:`return` passes control out of a :keyword:`try` statement with a
432:keyword:`finally` clause, that :keyword:`finally` clause is executed before
433really leaving the function.
434
435In a generator function, the :keyword:`return` statement is not allowed to
436include an :token:`expression_list`. In that context, a bare :keyword:`return`
437indicates that the generator is done and will cause :exc:`StopIteration` to be
438raised.
439
440
441.. _yield:
442
443The :keyword:`yield` statement
444==============================
445
Christian Heimesfaf2f632008-01-06 16:59:19 +0000446.. index::
447 statement: yield
448 single: generator; function
449 single: generator; iterator
450 single: function; generator
451 exception: StopIteration
452
Georg Brandl116aa622007-08-15 14:28:22 +0000453.. productionlist::
454 yield_stmt: `yield_expression`
455
Christian Heimesfaf2f632008-01-06 16:59:19 +0000456The :keyword:`yield` statement is only used when defining a generator function,
457and is only used in the body of the generator function. Using a :keyword:`yield`
458statement in a function definition is sufficient to cause that definition to
459create a generator function instead of a normal function.
Christian Heimes33fe8092008-04-13 13:53:33 +0000460When a generator function is called, it returns an iterator known as a generator
461iterator, or more commonly, a generator. The body of the generator function is
Georg Brandl6520d822009-02-05 11:01:54 +0000462executed by calling the :func:`next` function on the generator repeatedly until
463it raises an exception.
Christian Heimes33fe8092008-04-13 13:53:33 +0000464
465When a :keyword:`yield` statement is executed, the state of the generator is
466frozen and the value of :token:`expression_list` is returned to :meth:`next`'s
467caller. By "frozen" we mean that all local state is retained, including the
468current bindings of local variables, the instruction pointer, and the internal
Georg Brandl6520d822009-02-05 11:01:54 +0000469evaluation stack: enough information is saved so that the next time :func:`next`
Christian Heimes33fe8092008-04-13 13:53:33 +0000470is invoked, the function can proceed exactly as if the :keyword:`yield`
471statement were just another external call.
472
Georg Brandle6bcc912008-05-12 18:05:20 +0000473The :keyword:`yield` statement is allowed in the :keyword:`try` clause of a
474:keyword:`try` ... :keyword:`finally` construct. If the generator is not
475resumed before it is finalized (by reaching a zero reference count or by being
476garbage collected), the generator-iterator's :meth:`close` method will be
477called, allowing any pending :keyword:`finally` clauses to execute.
Christian Heimes33fe8092008-04-13 13:53:33 +0000478
479.. seealso::
480
481 :pep:`0255` - Simple Generators
482 The proposal for adding generators and the :keyword:`yield` statement to Python.
483
484 :pep:`0342` - Coroutines via Enhanced Generators
485 The proposal that, among other generator enhancements, proposed allowing
486 :keyword:`yield` to appear inside a :keyword:`try` ... :keyword:`finally` block.
487
Georg Brandl116aa622007-08-15 14:28:22 +0000488
489.. _raise:
490
491The :keyword:`raise` statement
492==============================
493
Christian Heimesfaf2f632008-01-06 16:59:19 +0000494.. index::
495 statement: raise
496 single: exception
497 pair: raising; exception
Georg Brandl1aea30a2008-07-19 15:51:07 +0000498 single: __traceback__ (exception attribute)
Georg Brandl116aa622007-08-15 14:28:22 +0000499
500.. productionlist::
Georg Brandle06de8b2008-05-05 21:42:51 +0000501 raise_stmt: "raise" [`expression` ["from" `expression`]]
Georg Brandl116aa622007-08-15 14:28:22 +0000502
503If no expressions are present, :keyword:`raise` re-raises the last exception
504that was active in the current scope. If no exception is active in the current
505scope, a :exc:`TypeError` exception is raised indicating that this is an error
Alexandre Vassalottif260e442008-05-11 19:59:59 +0000506(if running under IDLE, a :exc:`queue.Empty` exception is raised instead).
Georg Brandl116aa622007-08-15 14:28:22 +0000507
Georg Brandl02c30562007-09-07 17:52:53 +0000508Otherwise, :keyword:`raise` evaluates the first expression as the exception
509object. It must be either a subclass or an instance of :class:`BaseException`.
510If it is a class, the exception instance will be obtained when needed by
511instantiating the class with no arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000512
Georg Brandl02c30562007-09-07 17:52:53 +0000513The :dfn:`type` of the exception is the exception instance's class, the
514:dfn:`value` is the instance itself.
Georg Brandl116aa622007-08-15 14:28:22 +0000515
516.. index:: object: traceback
517
Georg Brandl02c30562007-09-07 17:52:53 +0000518A traceback object is normally created automatically when an exception is raised
Georg Brandle06de8b2008-05-05 21:42:51 +0000519and attached to it as the :attr:`__traceback__` attribute, which is writable.
520You can create an exception and set your own traceback in one step using the
521:meth:`with_traceback` exception method (which returns the same exception
522instance, with its traceback set to its argument), like so::
Georg Brandl02c30562007-09-07 17:52:53 +0000523
Benjamin Petersonb7851692009-02-16 16:15:34 +0000524 raise Exception("foo occurred").with_traceback(tracebackobj)
Georg Brandl02c30562007-09-07 17:52:53 +0000525
Georg Brandl1aea30a2008-07-19 15:51:07 +0000526.. index:: pair: exception; chaining
527 __cause__ (exception attribute)
528 __context__ (exception attribute)
Georg Brandl48310cd2009-01-03 21:18:54 +0000529
Georg Brandl1aea30a2008-07-19 15:51:07 +0000530The ``from`` clause is used for exception chaining: if given, the second
531*expression* must be another exception class or instance, which will then be
532attached to the raised exception as the :attr:`__cause__` attribute (which is
533writable). If the raised exception is not handled, both exceptions will be
534printed::
Georg Brandl02c30562007-09-07 17:52:53 +0000535
Georg Brandl1aea30a2008-07-19 15:51:07 +0000536 >>> try:
537 ... print(1 / 0)
538 ... except Exception as exc:
539 ... raise RuntimeError("Something bad happened") from exc
540 ...
541 Traceback (most recent call last):
542 File "<stdin>", line 2, in <module>
543 ZeroDivisionError: int division or modulo by zero
544
545 The above exception was the direct cause of the following exception:
546
547 Traceback (most recent call last):
548 File "<stdin>", line 4, in <module>
549 RuntimeError: Something bad happened
550
551A similar mechanism works implicitly if an exception is raised inside an
552exception handler: the previous exception is then attached as the new
553exception's :attr:`__context__` attribute::
554
555 >>> try:
556 ... print(1 / 0)
557 ... except:
558 ... raise RuntimeError("Something bad happened")
559 ...
560 Traceback (most recent call last):
561 File "<stdin>", line 2, in <module>
562 ZeroDivisionError: int division or modulo by zero
563
564 During handling of the above exception, another exception occurred:
565
566 Traceback (most recent call last):
567 File "<stdin>", line 4, in <module>
568 RuntimeError: Something bad happened
Georg Brandl116aa622007-08-15 14:28:22 +0000569
570Additional information on exceptions can be found in section :ref:`exceptions`,
571and information about handling exceptions is in section :ref:`try`.
572
573
574.. _break:
575
576The :keyword:`break` statement
577==============================
578
Christian Heimesfaf2f632008-01-06 16:59:19 +0000579.. index::
580 statement: break
581 statement: for
582 statement: while
583 pair: loop; statement
Georg Brandl116aa622007-08-15 14:28:22 +0000584
585.. productionlist::
586 break_stmt: "break"
587
Georg Brandl116aa622007-08-15 14:28:22 +0000588:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
589:keyword:`while` loop, but not nested in a function or class definition within
590that loop.
591
592.. index:: keyword: else
Georg Brandl02c30562007-09-07 17:52:53 +0000593 pair: loop control; target
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
596clause if the loop has one.
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
599target keeps its current value.
600
601.. index:: keyword: finally
602
603When :keyword:`break` passes control out of a :keyword:`try` statement with a
604:keyword:`finally` clause, that :keyword:`finally` clause is executed before
605really leaving the loop.
606
607
608.. _continue:
609
610The :keyword:`continue` statement
611=================================
612
Christian Heimesfaf2f632008-01-06 16:59:19 +0000613.. index::
614 statement: continue
615 statement: for
616 statement: while
617 pair: loop; statement
618 keyword: finally
Georg Brandl116aa622007-08-15 14:28:22 +0000619
620.. productionlist::
621 continue_stmt: "continue"
622
Georg Brandl116aa622007-08-15 14:28:22 +0000623:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
624:keyword:`while` loop, but not nested in a function or class definition or
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000625:keyword:`finally` clause within that loop. It continues with the next
Georg Brandl116aa622007-08-15 14:28:22 +0000626cycle of the nearest enclosing loop.
627
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000628When :keyword:`continue` passes control out of a :keyword:`try` statement with a
629:keyword:`finally` clause, that :keyword:`finally` clause is executed before
630really starting the next loop cycle.
631
Georg Brandl116aa622007-08-15 14:28:22 +0000632
633.. _import:
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000634.. _from:
Georg Brandl116aa622007-08-15 14:28:22 +0000635
636The :keyword:`import` statement
637===============================
638
639.. index::
640 statement: import
641 single: module; importing
642 pair: name; binding
643 keyword: from
644
645.. productionlist::
646 import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
647 : | "from" `relative_module` "import" `identifier` ["as" `name`]
648 : ( "," `identifier` ["as" `name`] )*
649 : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
650 : ( "," `identifier` ["as" `name`] )* [","] ")"
651 : | "from" `module` "import" "*"
652 module: (`identifier` ".")* `identifier`
653 relative_module: "."* `module` | "."+
654 name: `identifier`
655
656Import statements are executed in two steps: (1) find a module, and initialize
657it if necessary; (2) define a name or names in the local namespace (of the scope
Brett Cannone43b0602009-03-21 03:11:16 +0000658where the :keyword:`import` statement occurs). The statement comes in two
659forms differing on whether it uses the :keyword:`from` keyword. The first form
660(without :keyword:`from`) repeats these steps for each identifier in the list.
661The form with :keyword:`from` performs step (1) once, and then performs step
662(2) repeatedly. For a reference implementation of step (1), see the
663:mod:`importlib` module.
Georg Brandl116aa622007-08-15 14:28:22 +0000664
665.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000666 single: package
Georg Brandl116aa622007-08-15 14:28:22 +0000667
Brett Cannone43b0602009-03-21 03:11:16 +0000668To understand how step (1) occurs, one must first understand how Python handles
669hierarchical naming of modules. To help organize modules and provide a
670hierarchy in naming, Python has a concept of packages. A package can contain
671other packages and modules while modules cannot contain other modules or
672packages. From a file system perspective, packages are directories and modules
673are files. The original `specification for packages
674<http://www.python.org/doc/essays/packages.html>`_ is still available to read,
675although minor details have changed since the writing of that document.
Georg Brandl116aa622007-08-15 14:28:22 +0000676
677.. index::
Brett Cannone43b0602009-03-21 03:11:16 +0000678 single: sys.modules
Georg Brandl116aa622007-08-15 14:28:22 +0000679
Brett Cannone43b0602009-03-21 03:11:16 +0000680Once the name of the module is known (unless otherwise specified, the term
681"module" will refer to both packages and modules), searching
682for the module or package can begin. The first place checked is
683:data:`sys.modules`, the cache of all modules that have been imported
684previously. If the module is found there then it is used in step (2) of import.
685
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 Melottif4b46232009-09-16 01:33:31 +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 Brandlc5605df2009-08-13 08:26:44 +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
Georg Brandl628e6f92009-10-27 20:24:45 +0000940.. impl-detail::
941
942 The current implementation does not enforce the latter two restrictions, but
943 programs should not abuse this freedom, as future implementations may enforce
944 them or silently change the meaning of the program.
Georg Brandl116aa622007-08-15 14:28:22 +0000945
946.. index::
947 builtin: exec
948 builtin: eval
949 builtin: compile
950
951**Programmer's note:** the :keyword:`global` is a directive to the parser. It
952applies only to code parsed at the same time as the :keyword:`global` statement.
953In particular, a :keyword:`global` statement contained in a string or code
954object supplied to the builtin :func:`exec` function does not affect the code
955block *containing* the function call, and code contained in such a string is
956unaffected by :keyword:`global` statements in the code containing the function
957call. The same applies to the :func:`eval` and :func:`compile` functions.
958
Georg Brandl02c30562007-09-07 17:52:53 +0000959
960.. _nonlocal:
961
962The :keyword:`nonlocal` statement
963=================================
964
965.. index:: statement: nonlocal
966
967.. productionlist::
968 nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)*
969
Georg Brandlc5d98b42007-12-04 18:11:03 +0000970.. XXX add when implemented
Georg Brandl06788c92009-01-03 21:31:47 +0000971 : ["=" (`target_list` "=")+ expression_list]
972 : | "nonlocal" identifier augop expression_list
Georg Brandlc5d98b42007-12-04 18:11:03 +0000973
Georg Brandl48310cd2009-01-03 21:18:54 +0000974The :keyword:`nonlocal` statement causes the listed identifiers to refer to
975previously bound variables in the nearest enclosing scope. This is important
976because the default behavior for binding is to search the local namespace
Georg Brandlc5d98b42007-12-04 18:11:03 +0000977first. The statement allows encapsulated code to rebind variables outside of
978the local scope besides the global (module) scope.
979
Georg Brandlc5d98b42007-12-04 18:11:03 +0000980.. XXX not implemented
981 The :keyword:`nonlocal` statement may prepend an assignment or augmented
982 assignment, but not an expression.
983
984Names listed in a :keyword:`nonlocal` statement, unlike to those listed in a
985:keyword:`global` statement, must refer to pre-existing bindings in an
986enclosing scope (the scope in which a new binding should be created cannot
987be determined unambiguously).
988
Georg Brandl48310cd2009-01-03 21:18:54 +0000989Names listed in a :keyword:`nonlocal` statement must not collide with
Georg Brandlc5d98b42007-12-04 18:11:03 +0000990pre-existing bindings in the local scope.
991
992.. seealso::
993
994 :pep:`3104` - Access to Names in Outer Scopes
995 The specification for the :keyword:`nonlocal` statement.
Georg Brandl02c30562007-09-07 17:52:53 +0000996
997
Georg Brandl116aa622007-08-15 14:28:22 +0000998.. rubric:: Footnotes
999
1000.. [#] It may occur within an :keyword:`except` or :keyword:`else` clause. The
Georg Brandlc5d98b42007-12-04 18:11:03 +00001001 restriction on occurring in the :keyword:`try` clause is implementor's
1002 laziness and will eventually be lifted.