blob: d8e539d53cd6c8de894afadec0206bbd044f2a78 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +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 : | `print_stmt`
22 : | `return_stmt`
23 : | `yield_stmt`
24 : | `raise_stmt`
25 : | `break_stmt`
26 : | `continue_stmt`
27 : | `import_stmt`
28 : | `global_stmt`
29 : | `exec_stmt`
30
31
32.. _exprstmts:
33
34Expression statements
35=====================
36
Georg Brandl62658332008-01-05 19:29:45 +000037.. index::
38 pair: expression; statement
39 pair: expression; list
Georg Brandl8ec7f652007-08-15 14:28:01 +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 Brandl8ec7f652007-08-15 14:28:01 +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
64standard output (see section :ref:`print`) on a line by itself. (Expression
65statements yielding ``None`` are not written, so that procedure calls do not
66cause any output.)
67
68
Georg Brandl8ec7f652007-08-15 14:28:01 +000069.. _assignment:
70
71Assignment statements
72=====================
73
74.. index::
Terry Jan Reedyf3ae10e2014-04-29 01:19:05 -040075 single: =; assignment statement
Georg Brandl8ec7f652007-08-15 14:28:01 +000076 pair: assignment; statement
77 pair: binding; name
78 pair: rebinding; name
79 object: mutable
80 pair: attribute; assignment
81
82Assignment statements are used to (re)bind names to values and to modify
83attributes or items of mutable objects:
84
85.. productionlist::
86 assignment_stmt: (`target_list` "=")+ (`expression_list` | `yield_expression`)
87 target_list: `target` ("," `target`)* [","]
88 target: `identifier`
89 : | "(" `target_list` ")"
90 : | "[" `target_list` "]"
91 : | `attributeref`
92 : | `subscription`
93 : | `slicing`
94
95(See section :ref:`primaries` for the syntax definitions for the last three
96symbols.)
97
98.. index:: pair: expression; list
99
100An assignment statement evaluates the expression list (remember that this can be
101a single expression or a comma-separated list, the latter yielding a tuple) and
102assigns the single resulting object to each of the target lists, from left to
103right.
104
105.. index::
106 single: target
107 pair: target; list
108
109Assignment is defined recursively depending on the form of the target (list).
110When a target is part of a mutable object (an attribute reference, subscription
111or slicing), the mutable object must ultimately perform the assignment and
112decide about its validity, and may raise an exception if the assignment is
113unacceptable. The rules observed by various types and the exceptions raised are
114given with the definition of the object types (see section :ref:`types`).
115
116.. index:: triple: target; list; assignment
117
118Assignment of an object to a target list is recursively defined as follows.
119
120* If the target list is a single target: The object is assigned to that target.
121
Georg Brandl0ac63f12009-02-18 00:25:13 +0000122* If the target list is a comma-separated list of targets: The object must be an
123 iterable with the same number of items as there are targets in the target list,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000124 and the items are assigned, from left to right, to the corresponding targets.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000125
126Assignment of an object to a single target is recursively defined as follows.
127
128* If the target is an identifier (name):
129
130 .. index:: statement: global
131
Georg Brandl8360d5d2007-09-07 14:14:40 +0000132 * If the name does not occur in a :keyword:`global` statement in the current
Georg Brandl8ec7f652007-08-15 14:28:01 +0000133 code block: the name is bound to the object in the current local namespace.
134
Georg Brandl8360d5d2007-09-07 14:14:40 +0000135 * Otherwise: the name is bound to the object in the current global namespace.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000136
137 .. index:: single: destructor
138
139 The name is rebound if it was already bound. This may cause the reference count
140 for the object previously bound to the name to reach zero, causing the object to
141 be deallocated and its destructor (if it has one) to be called.
142
Georg Brandl8ec7f652007-08-15 14:28:01 +0000143* If the target is a target list enclosed in parentheses or in square brackets:
Georg Brandl0ac63f12009-02-18 00:25:13 +0000144 The object must be an iterable with the same number of items as there are
145 targets in the target list, and its items are assigned, from left to right,
146 to the corresponding targets.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000147
148 .. index:: pair: attribute; assignment
149
150* If the target is an attribute reference: The primary expression in the
151 reference is evaluated. It should yield an object with assignable attributes;
Georg Brandlf4e6b982009-09-16 10:12:06 +0000152 if this is not the case, :exc:`TypeError` is raised. That object is then
153 asked to assign the assigned object to the given attribute; if it cannot
154 perform the assignment, it raises an exception (usually but not necessarily
Georg Brandl8ec7f652007-08-15 14:28:01 +0000155 :exc:`AttributeError`).
156
Georg Brandlf4e6b982009-09-16 10:12:06 +0000157 .. _attr-target-note:
158
159 Note: If the object is a class instance and the attribute reference occurs on
160 both sides of the assignment operator, the RHS expression, ``a.x`` can access
161 either an instance attribute or (if no instance attribute exists) a class
162 attribute. The LHS target ``a.x`` is always set as an instance attribute,
163 creating it if necessary. Thus, the two occurrences of ``a.x`` do not
164 necessarily refer to the same attribute: if the RHS expression refers to a
165 class attribute, the LHS creates a new instance attribute as the target of the
166 assignment::
167
168 class Cls:
169 x = 3 # class variable
170 inst = Cls()
171 inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x as 3
172
173 This description does not necessarily apply to descriptor attributes, such as
174 properties created with :func:`property`.
175
Georg Brandl8ec7f652007-08-15 14:28:01 +0000176 .. index::
177 pair: subscription; assignment
178 object: mutable
179
180* If the target is a subscription: The primary expression in the reference is
181 evaluated. It should yield either a mutable sequence object (such as a list) or
182 a mapping object (such as a dictionary). Next, the subscript expression is
183 evaluated.
184
185 .. index::
186 object: sequence
187 object: list
188
189 If the primary is a mutable sequence object (such as a list), the subscript must
190 yield a plain integer. If it is negative, the sequence's length is added to it.
191 The resulting value must be a nonnegative integer less than the sequence's
192 length, and the sequence is asked to assign the assigned object to its item with
193 that index. If the index is out of range, :exc:`IndexError` is raised
194 (assignment to a subscripted sequence cannot add new items to a list).
195
196 .. index::
197 object: mapping
198 object: dictionary
199
200 If the primary is a mapping object (such as a dictionary), the subscript must
201 have a type compatible with the mapping's key type, and the mapping is then
202 asked to create a key/datum pair which maps the subscript to the assigned
203 object. This can either replace an existing key/value pair with the same key
204 value, or insert a new key/value pair (if no key with the same value existed).
205
206 .. index:: pair: slicing; assignment
207
208* If the target is a slicing: The primary expression in the reference is
209 evaluated. It should yield a mutable sequence object (such as a list). The
210 assigned object should be a sequence object of the same type. Next, the lower
211 and upper bound expressions are evaluated, insofar they are present; defaults
212 are zero and the sequence's length. The bounds should evaluate to (small)
213 integers. If either bound is negative, the sequence's length is added to it.
214 The resulting bounds are clipped to lie between zero and the sequence's length,
215 inclusive. Finally, the sequence object is asked to replace the slice with the
216 items of the assigned sequence. The length of the slice may be different from
217 the length of the assigned sequence, thus changing the length of the target
218 sequence, if the object allows it.
219
Georg Brandl6c14e582009-10-22 11:48:10 +0000220.. impl-detail::
221
222 In the current implementation, the syntax for targets is taken to be the same
223 as for expressions, and invalid syntax is rejected during the code generation
224 phase, causing less detailed error messages.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000225
226WARNING: Although the definition of assignment implies that overlaps between the
227left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
228swaps two variables), overlaps *within* the collection of assigned-to variables
229are not safe! For instance, the following program prints ``[0, 2]``::
230
231 x = [0, 1]
232 i = 0
233 i, x[i] = 1, 2
234 print x
235
236
237.. _augassign:
238
239Augmented assignment statements
240-------------------------------
241
242.. index::
243 pair: augmented; assignment
244 single: statement; assignment, augmented
Terry Jan Reedyf3ae10e2014-04-29 01:19:05 -0400245 single: +=; augmented assignment
246 single: -=; augmented assignment
247 single: *=; augmented assignment
248 single: /=; augmented assignment
249 single: %=; augmented assignment
250 single: &=; augmented assignment
251 single: ^=; augmented assignment
252 single: |=; augmented assignment
253 single: **=; augmented assignment
254 single: //=; augmented assignment
255 single: >>=; augmented assignment
256 single: <<=; augmented assignment
Georg Brandl8ec7f652007-08-15 14:28:01 +0000257
258Augmented assignment is the combination, in a single statement, of a binary
259operation and an assignment statement:
260
261.. productionlist::
Georg Brandl4a565cc2009-01-18 13:47:26 +0000262 augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
263 augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
Georg Brandl83463ce2008-09-21 07:18:28 +0000264 augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
Georg Brandl8ec7f652007-08-15 14:28:01 +0000265 : | ">>=" | "<<=" | "&=" | "^=" | "|="
266
267(See section :ref:`primaries` for the syntax definitions for the last three
268symbols.)
269
270An augmented assignment evaluates the target (which, unlike normal assignment
271statements, cannot be an unpacking) and the expression list, performs the binary
272operation specific to the type of assignment on the two operands, and assigns
273the result to the original target. The target is only evaluated once.
274
275An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
2761`` to achieve a similar, but not exactly equal effect. In the augmented
277version, ``x`` is only evaluated once. Also, when possible, the actual operation
278is performed *in-place*, meaning that rather than creating a new object and
279assigning that to the target, the old object is modified instead.
280
281With the exception of assigning to tuples and multiple targets in a single
282statement, the assignment done by augmented assignment statements is handled the
283same way as normal assignments. Similarly, with the exception of the possible
284*in-place* behavior, the binary operation performed by augmented assignment is
285the same as the normal binary operations.
286
Georg Brandlf4e6b982009-09-16 10:12:06 +0000287For targets which are attribute references, the same :ref:`caveat about class
288and instance attributes <attr-target-note>` applies as for regular assignments.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000289
290
Georg Brandl745e48d2007-09-18 07:24:40 +0000291.. _assert:
292
293The :keyword:`assert` statement
294===============================
295
296.. index::
297 statement: assert
298 pair: debugging; assertions
299
300Assert statements are a convenient way to insert debugging assertions into a
301program:
302
303.. productionlist::
304 assert_stmt: "assert" `expression` ["," `expression`]
305
306The simple form, ``assert expression``, is equivalent to ::
307
Benjamin Petersond38d3442009-07-22 16:34:37 +0000308 if __debug__:
309 if not expression: raise AssertionError
Georg Brandl745e48d2007-09-18 07:24:40 +0000310
311The extended form, ``assert expression1, expression2``, is equivalent to ::
312
Benjamin Petersond38d3442009-07-22 16:34:37 +0000313 if __debug__:
314 if not expression1: raise AssertionError(expression2)
Georg Brandl745e48d2007-09-18 07:24:40 +0000315
316.. index::
317 single: __debug__
318 exception: AssertionError
319
Georg Brandlb19be572007-12-29 10:57:00 +0000320These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
Georg Brandl745e48d2007-09-18 07:24:40 +0000321the built-in variables with those names. In the current implementation, the
Georg Brandlb19be572007-12-29 10:57:00 +0000322built-in variable :const:`__debug__` is ``True`` under normal circumstances,
Georg Brandl745e48d2007-09-18 07:24:40 +0000323``False`` when optimization is requested (command line option -O). The current
324code generator emits no code for an assert statement when optimization is
325requested at compile time. Note that it is unnecessary to include the source
326code for the expression that failed in the error message; it will be displayed
327as part of the stack trace.
328
Georg Brandlb19be572007-12-29 10:57:00 +0000329Assignments to :const:`__debug__` are illegal. The value for the built-in variable
Georg Brandl745e48d2007-09-18 07:24:40 +0000330is determined when the interpreter starts.
331
332
Georg Brandl8ec7f652007-08-15 14:28:01 +0000333.. _pass:
334
335The :keyword:`pass` statement
336=============================
337
Georg Brandl62658332008-01-05 19:29:45 +0000338.. index::
339 statement: pass
340 pair: null; operation
Georg Brandl8ec7f652007-08-15 14:28:01 +0000341
342.. productionlist::
343 pass_stmt: "pass"
344
Georg Brandl8ec7f652007-08-15 14:28:01 +0000345:keyword:`pass` is a null operation --- when it is executed, nothing happens.
346It is useful as a placeholder when a statement is required syntactically, but no
347code needs to be executed, for example::
348
349 def f(arg): pass # a function that does nothing (yet)
350
351 class C: pass # a class with no methods (yet)
352
353
354.. _del:
355
356The :keyword:`del` statement
357============================
358
Georg Brandl62658332008-01-05 19:29:45 +0000359.. index::
360 statement: del
361 pair: deletion; target
362 triple: deletion; target; list
Georg Brandl8ec7f652007-08-15 14:28:01 +0000363
364.. productionlist::
365 del_stmt: "del" `target_list`
366
Georg Brandl8ec7f652007-08-15 14:28:01 +0000367Deletion is recursively defined very similar to the way assignment is defined.
Sandro Tosiec53eb82011-12-24 19:55:49 +0100368Rather than spelling it out in full details, here are some hints.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000369
370Deletion of a target list recursively deletes each target, from left to right.
371
372.. index::
373 statement: global
374 pair: unbinding; name
375
376Deletion of a name removes the binding of that name from the local or global
377namespace, depending on whether the name occurs in a :keyword:`global` statement
378in the same code block. If the name is unbound, a :exc:`NameError` exception
379will be raised.
380
381.. index:: pair: free; variable
382
383It is illegal to delete a name from the local namespace if it occurs as a free
384variable in a nested block.
385
386.. index:: pair: attribute; deletion
387
388Deletion of attribute references, subscriptions and slicings is passed to the
389primary object involved; deletion of a slicing is in general equivalent to
390assignment of an empty slice of the right type (but even this is determined by
391the sliced object).
392
393
394.. _print:
395
396The :keyword:`print` statement
397==============================
398
399.. index:: statement: print
400
401.. productionlist::
Georg Brandld82a9c12008-06-06 10:43:43 +0000402 print_stmt: "print" ([`expression` ("," `expression`)* [","]]
403 : | ">>" `expression` [("," `expression`)+ [","]])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000404
405:keyword:`print` evaluates each expression in turn and writes the resulting
406object to standard output (see below). If an object is not a string, it is
407first converted to a string using the rules for string conversions. The
408(resulting or original) string is then written. A space is written before each
409object is (converted and) written, unless the output system believes it is
410positioned at the beginning of a line. This is the case (1) when no characters
411have yet been written to standard output, (2) when the last character written to
Georg Brandl346a38d2009-05-22 09:58:48 +0000412standard output is a whitespace character except ``' '``, or (3) when the last
413write operation on standard output was not a :keyword:`print` statement.
414(In some cases it may be functional to write an empty string to standard output
415for this reason.)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000416
417.. note::
418
419 Objects which act like file objects but which are not the built-in file objects
420 often do not properly emulate this aspect of the file object's behavior, so it
421 is best not to rely on this.
422
423.. index::
424 single: output
425 pair: writing; values
Georg Brandl8ec7f652007-08-15 14:28:01 +0000426 pair: trailing; comma
427 pair: newline; suppression
428
429A ``'\n'`` character is written at the end, unless the :keyword:`print`
430statement ends with a comma. This is the only action if the statement contains
431just the keyword :keyword:`print`.
432
433.. index::
434 pair: standard; output
435 module: sys
436 single: stdout (in module sys)
437 exception: RuntimeError
438
439Standard output is defined as the file object named ``stdout`` in the built-in
440module :mod:`sys`. If no such object exists, or if it does not have a
441:meth:`write` method, a :exc:`RuntimeError` exception is raised.
442
443.. index:: single: extended print statement
444
445:keyword:`print` also has an extended form, defined by the second portion of the
446syntax described above. This form is sometimes referred to as ":keyword:`print`
447chevron." In this form, the first expression after the ``>>`` must evaluate to a
448"file-like" object, specifically an object that has a :meth:`write` method as
449described above. With this extended form, the subsequent expressions are
450printed to this file object. If the first expression evaluates to ``None``,
451then ``sys.stdout`` is used as the file for output.
452
453
454.. _return:
455
456The :keyword:`return` statement
457===============================
458
Georg Brandl62658332008-01-05 19:29:45 +0000459.. index::
460 statement: return
461 pair: function; definition
462 pair: class; definition
Georg Brandl8ec7f652007-08-15 14:28:01 +0000463
464.. productionlist::
465 return_stmt: "return" [`expression_list`]
466
Georg Brandl8ec7f652007-08-15 14:28:01 +0000467:keyword:`return` may only occur syntactically nested in a function definition,
468not within a nested class definition.
469
470If an expression list is present, it is evaluated, else ``None`` is substituted.
471
472:keyword:`return` leaves the current function call with the expression list (or
473``None``) as return value.
474
475.. index:: keyword: finally
476
477When :keyword:`return` passes control out of a :keyword:`try` statement with a
478:keyword:`finally` clause, that :keyword:`finally` clause is executed before
479really leaving the function.
480
481In a generator function, the :keyword:`return` statement is not allowed to
482include an :token:`expression_list`. In that context, a bare :keyword:`return`
483indicates that the generator is done and will cause :exc:`StopIteration` to be
484raised.
485
486
487.. _yield:
488
489The :keyword:`yield` statement
490==============================
491
Georg Brandl8ec7f652007-08-15 14:28:01 +0000492.. index::
Georg Brandl62658332008-01-05 19:29:45 +0000493 statement: yield
Georg Brandl8ec7f652007-08-15 14:28:01 +0000494 single: generator; function
495 single: generator; iterator
496 single: function; generator
497 exception: StopIteration
498
Georg Brandl62658332008-01-05 19:29:45 +0000499.. productionlist::
500 yield_stmt: `yield_expression`
501
Georg Brandl8ec7f652007-08-15 14:28:01 +0000502The :keyword:`yield` statement is only used when defining a generator function,
503and is only used in the body of the generator function. Using a :keyword:`yield`
504statement in a function definition is sufficient to cause that definition to
505create a generator function instead of a normal function.
506
507When a generator function is called, it returns an iterator known as a generator
508iterator, or more commonly, a generator. The body of the generator function is
509executed by calling the generator's :meth:`next` method repeatedly until it
510raises an exception.
511
512When a :keyword:`yield` statement is executed, the state of the generator is
513frozen and the value of :token:`expression_list` is returned to :meth:`next`'s
514caller. By "frozen" we mean that all local state is retained, including the
515current bindings of local variables, the instruction pointer, and the internal
516evaluation stack: enough information is saved so that the next time :meth:`next`
517is invoked, the function can proceed exactly as if the :keyword:`yield`
518statement were just another external call.
519
520As of Python version 2.5, the :keyword:`yield` statement is now allowed in the
521:keyword:`try` clause of a :keyword:`try` ... :keyword:`finally` construct. If
522the generator is not resumed before it is finalized (by reaching a zero
523reference count or by being garbage collected), the generator-iterator's
524:meth:`close` method will be called, allowing any pending :keyword:`finally`
525clauses to execute.
526
Andrew Kuchling67f84a72013-05-09 20:55:22 -0400527For full details of :keyword:`yield` semantics, refer to the :ref:`yieldexpr`
528section.
529
Georg Brandl8ec7f652007-08-15 14:28:01 +0000530.. note::
531
Andrew M. Kuchling3351e412008-04-10 21:27:10 +0000532 In Python 2.2, the :keyword:`yield` statement was only allowed when the
533 ``generators`` feature has been enabled. This ``__future__``
534 import statement was used to enable the feature::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000535
536 from __future__ import generators
537
538
539.. seealso::
540
541 :pep:`0255` - Simple Generators
542 The proposal for adding generators and the :keyword:`yield` statement to Python.
543
544 :pep:`0342` - Coroutines via Enhanced Generators
545 The proposal that, among other generator enhancements, proposed allowing
546 :keyword:`yield` to appear inside a :keyword:`try` ... :keyword:`finally` block.
547
548
549.. _raise:
550
551The :keyword:`raise` statement
552==============================
553
Georg Brandl62658332008-01-05 19:29:45 +0000554.. index::
555 statement: raise
556 single: exception
557 pair: raising; exception
Georg Brandl8ec7f652007-08-15 14:28:01 +0000558
559.. productionlist::
560 raise_stmt: "raise" [`expression` ["," `expression` ["," `expression`]]]
561
Georg Brandl8ec7f652007-08-15 14:28:01 +0000562If no expressions are present, :keyword:`raise` re-raises the last exception
563that was active in the current scope. If no exception is active in the current
564scope, a :exc:`TypeError` exception is raised indicating that this is an error
Georg Brandla6168f92008-05-25 07:20:14 +0000565(if running under IDLE, a :exc:`Queue.Empty` exception is raised instead).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000566
567Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
568using ``None`` as the value of omitted expressions. The first two objects are
569used to determine the *type* and *value* of the exception.
570
571If the first object is an instance, the type of the exception is the class of
572the instance, the instance itself is the value, and the second object must be
573``None``.
574
575If the first object is a class, it becomes the type of the exception. The second
576object is used to determine the exception value: If it is an instance of the
577class, the instance becomes the exception value. If the second object is a
578tuple, it is used as the argument list for the class constructor; if it is
579``None``, an empty argument list is used, and any other object is treated as a
580single argument to the constructor. The instance so created by calling the
581constructor is used as the exception value.
582
583.. index:: object: traceback
584
585If a third object is present and not ``None``, it must be a traceback object
586(see section :ref:`types`), and it is substituted instead of the current
587location as the place where the exception occurred. If the third object is
588present and not a traceback object or ``None``, a :exc:`TypeError` exception is
589raised. The three-expression form of :keyword:`raise` is useful to re-raise an
590exception transparently in an except clause, but :keyword:`raise` with no
591expressions should be preferred if the exception to be re-raised was the most
592recently active exception in the current scope.
593
594Additional information on exceptions can be found in section :ref:`exceptions`,
595and information about handling exceptions is in section :ref:`try`.
596
597
598.. _break:
599
600The :keyword:`break` statement
601==============================
602
Georg Brandl8ec7f652007-08-15 14:28:01 +0000603.. index::
Georg Brandl62658332008-01-05 19:29:45 +0000604 statement: break
Georg Brandl8ec7f652007-08-15 14:28:01 +0000605 statement: for
606 statement: while
607 pair: loop; statement
608
Georg Brandl62658332008-01-05 19:29:45 +0000609.. productionlist::
610 break_stmt: "break"
611
Georg Brandl8ec7f652007-08-15 14:28:01 +0000612:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
613:keyword:`while` loop, but not nested in a function or class definition within
614that loop.
615
616.. index:: keyword: else
617
618It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
619clause if the loop has one.
620
621.. index:: pair: loop control; target
622
623If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
624target keeps its current value.
625
626.. index:: keyword: finally
627
628When :keyword:`break` passes control out of a :keyword:`try` statement with a
629:keyword:`finally` clause, that :keyword:`finally` clause is executed before
630really leaving the loop.
631
632
633.. _continue:
634
635The :keyword:`continue` statement
636=================================
637
Georg Brandl8ec7f652007-08-15 14:28:01 +0000638.. index::
Georg Brandl62658332008-01-05 19:29:45 +0000639 statement: continue
Georg Brandl8ec7f652007-08-15 14:28:01 +0000640 statement: for
641 statement: while
642 pair: loop; statement
643 keyword: finally
644
Georg Brandl62658332008-01-05 19:29:45 +0000645.. productionlist::
646 continue_stmt: "continue"
647
Georg Brandl8ec7f652007-08-15 14:28:01 +0000648:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
649:keyword:`while` loop, but not nested in a function or class definition or
Georg Brandl47a5aec2008-03-08 09:54:06 +0000650:keyword:`finally` clause within that loop. It continues with the next
Georg Brandl8ec7f652007-08-15 14:28:01 +0000651cycle of the nearest enclosing loop.
652
Georg Brandl47a5aec2008-03-08 09:54:06 +0000653When :keyword:`continue` passes control out of a :keyword:`try` statement with a
654:keyword:`finally` clause, that :keyword:`finally` clause is executed before
655really starting the next loop cycle.
656
Georg Brandl8ec7f652007-08-15 14:28:01 +0000657
658.. _import:
Georg Brandlb19be572007-12-29 10:57:00 +0000659.. _from:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000660
661The :keyword:`import` statement
662===============================
663
664.. index::
665 statement: import
666 single: module; importing
667 pair: name; binding
668 keyword: from
Terry Jan Reedycd3d7412014-04-29 00:58:48 -0400669 single: as; import statement
Georg Brandl8ec7f652007-08-15 14:28:01 +0000670
671.. productionlist::
672 import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
673 : | "from" `relative_module` "import" `identifier` ["as" `name`]
674 : ( "," `identifier` ["as" `name`] )*
675 : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
676 : ( "," `identifier` ["as" `name`] )* [","] ")"
677 : | "from" `module` "import" "*"
678 module: (`identifier` ".")* `identifier`
679 relative_module: "."* `module` | "."+
680 name: `identifier`
681
682Import statements are executed in two steps: (1) find a module, and initialize
683it if necessary; (2) define a name or names in the local namespace (of the scope
Georg Brandl624f3372009-03-31 16:11:45 +0000684where the :keyword:`import` statement occurs). The statement comes in two
685forms differing on whether it uses the :keyword:`from` keyword. The first form
686(without :keyword:`from`) repeats these steps for each identifier in the list.
687The form with :keyword:`from` performs step (1) once, and then performs step
688(2) repeatedly.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000689
690.. index::
Georg Brandl624f3372009-03-31 16:11:45 +0000691 single: package
Georg Brandl8ec7f652007-08-15 14:28:01 +0000692
Georg Brandl624f3372009-03-31 16:11:45 +0000693To understand how step (1) occurs, one must first understand how Python handles
694hierarchical naming of modules. To help organize modules and provide a
695hierarchy in naming, Python has a concept of packages. A package can contain
696other packages and modules while modules cannot contain other modules or
697packages. From a file system perspective, packages are directories and modules
698are files. The original `specification for packages
699<http://www.python.org/doc/essays/packages.html>`_ is still available to read,
700although minor details have changed since the writing of that document.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000701
702.. index::
Georg Brandl624f3372009-03-31 16:11:45 +0000703 single: sys.modules
Georg Brandl8ec7f652007-08-15 14:28:01 +0000704
Georg Brandl624f3372009-03-31 16:11:45 +0000705Once the name of the module is known (unless otherwise specified, the term
706"module" will refer to both packages and modules), searching
707for the module or package can begin. The first place checked is
708:data:`sys.modules`, the cache of all modules that have been imported
709previously. If the module is found there then it is used in step (2) of import.
710
711.. index::
712 single: sys.meta_path
713 single: finder
714 pair: finder; find_module
715 single: __path__
716
717If the module is not found in the cache, then :data:`sys.meta_path` is searched
718(the specification for :data:`sys.meta_path` can be found in :pep:`302`).
719The object is a list of :term:`finder` objects which are queried in order as to
720whether they know how to load the module by calling their :meth:`find_module`
721method with the name of the module. If the module happens to be contained
722within a package (as denoted by the existence of a dot in the name), then a
723second argument to :meth:`find_module` is given as the value of the
724:attr:`__path__` attribute from the parent package (everything up to the last
725dot in the name of the module being imported). If a finder can find the module
Sandro Tosia76bb032012-01-14 16:43:14 +0100726it returns a :term:`loader` (discussed later) or returns ``None``.
Georg Brandl624f3372009-03-31 16:11:45 +0000727
728.. index::
729 single: sys.path_hooks
730 single: sys.path_importer_cache
731 single: sys.path
732
733If none of the finders on :data:`sys.meta_path` are able to find the module
734then some implicitly defined finders are queried. Implementations of Python
735vary in what implicit meta path finders are defined. The one they all do
736define, though, is one that handles :data:`sys.path_hooks`,
737:data:`sys.path_importer_cache`, and :data:`sys.path`.
738
739The implicit finder searches for the requested module in the "paths" specified
740in one of two places ("paths" do not have to be file system paths). If the
741module being imported is supposed to be contained within a package then the
742second argument passed to :meth:`find_module`, :attr:`__path__` on the parent
743package, is used as the source of paths. If the module is not contained in a
744package then :data:`sys.path` is used as the source of paths.
745
746Once the source of paths is chosen it is iterated over to find a finder that
747can handle that path. The dict at :data:`sys.path_importer_cache` caches
748finders for paths and is checked for a finder. If the path does not have a
749finder cached then :data:`sys.path_hooks` is searched by calling each object in
750the list with a single argument of the path, returning a finder or raises
751:exc:`ImportError`. If a finder is returned then it is cached in
752:data:`sys.path_importer_cache` and then used for that path entry. If no finder
Sandro Tosia76bb032012-01-14 16:43:14 +0100753can be found but the path exists then a value of ``None`` is
Georg Brandl624f3372009-03-31 16:11:45 +0000754stored in :data:`sys.path_importer_cache` to signify that an implicit,
755file-based finder that handles modules stored as individual files should be
756used for that path. If the path does not exist then a finder which always
Ezio Melotti93324d72013-03-28 05:47:31 +0200757returns ``None`` is placed in the cache for the path.
Georg Brandl624f3372009-03-31 16:11:45 +0000758
759.. index::
760 single: loader
761 pair: loader; load_module
762 exception: ImportError
763
764If no finder can find the module then :exc:`ImportError` is raised. Otherwise
765some finder returned a loader whose :meth:`load_module` method is called with
766the name of the module to load (see :pep:`302` for the original definition of
767loaders). A loader has several responsibilities to perform on a module it
768loads. First, if the module already exists in :data:`sys.modules` (a
769possibility if the loader is called outside of the import machinery) then it
770is to use that module for initialization and not a new module. But if the
771module does not exist in :data:`sys.modules` then it is to be added to that
772dict before initialization begins. If an error occurs during loading of the
773module and it was added to :data:`sys.modules` it is to be removed from the
774dict. If an error occurs but the module was already in :data:`sys.modules` it
775is left in the dict.
776
777.. index::
778 single: __name__
779 single: __file__
780 single: __path__
781 single: __package__
782 single: __loader__
783
784The loader must set several attributes on the module. :data:`__name__` is to be
785set to the name of the module. :data:`__file__` is to be the "path" to the file
786unless the module is built-in (and thus listed in
787:data:`sys.builtin_module_names`) in which case the attribute is not set.
788If what is being imported is a package then :data:`__path__` is to be set to a
789list of paths to be searched when looking for modules and packages contained
790within the package being imported. :data:`__package__` is optional but should
791be set to the name of package that contains the module or package (the empty
792string is used for module not contained in a package). :data:`__loader__` is
793also optional but should be set to the loader object that is loading the
794module.
795
796.. index::
797 exception: ImportError
798
799If an error occurs during loading then the loader raises :exc:`ImportError` if
800some other exception is not already being propagated. Otherwise the loader
801returns the module that was loaded and initialized.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000802
803When step (1) finishes without raising an exception, step (2) can begin.
804
805The first form of :keyword:`import` statement binds the module name in the local
806namespace to the module object, and then goes on to import the next identifier,
807if any. If the module name is followed by :keyword:`as`, the name following
808:keyword:`as` is used as the local name for the module.
809
810.. index::
811 pair: name; binding
812 exception: ImportError
813
814The :keyword:`from` form does not bind the module name: it goes through the list
815of identifiers, looks each one of them up in the module found in step (1), and
816binds the name in the local namespace to the object thus found. As with the
817first form of :keyword:`import`, an alternate local name can be supplied by
818specifying ":keyword:`as` localname". If a name is not found,
819:exc:`ImportError` is raised. If the list of identifiers is replaced by a star
820(``'*'``), all public names defined in the module are bound in the local
821namespace of the :keyword:`import` statement..
822
823.. index:: single: __all__ (optional module attribute)
824
825The *public names* defined by a module are determined by checking the module's
826namespace for a variable named ``__all__``; if defined, it must be a sequence of
827strings which are names defined or imported by that module. The names given in
828``__all__`` are all considered public and are required to exist. If ``__all__``
829is not defined, the set of public names includes all names found in the module's
830namespace which do not begin with an underscore character (``'_'``).
831``__all__`` should contain the entire public API. It is intended to avoid
832accidentally exporting items that are not part of the API (such as library
833modules which were imported and used within the module).
834
835The :keyword:`from` form with ``*`` may only occur in a module scope. If the
836wild card form of import --- ``import *`` --- is used in a function and the
837function contains or is a nested block with free variables, the compiler will
838raise a :exc:`SyntaxError`.
839
840.. index::
Georg Brandl624f3372009-03-31 16:11:45 +0000841 single: relative; import
Georg Brandl8ec7f652007-08-15 14:28:01 +0000842
Georg Brandl624f3372009-03-31 16:11:45 +0000843When specifying what module to import you do not have to specify the absolute
844name of the module. When a module or package is contained within another
845package it is possible to make a relative import within the same top package
846without having to mention the package name. By using leading dots in the
847specified module or package after :keyword:`from` you can specify how high to
848traverse up the current package hierarchy without specifying exact names. One
849leading dot means the current package where the module making the import
850exists. Two dots means up one package level. Three dots is up two levels, etc.
851So if you execute ``from . import mod`` from a module in the ``pkg`` package
852then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
Florent Xicluna9b90cd12010-09-13 07:46:37 +0000853import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
Georg Brandl624f3372009-03-31 16:11:45 +0000854The specification for relative imports is contained within :pep:`328`.
Georg Brandl290d3d92008-08-01 20:13:29 +0000855
Benjamin Peterson51d06ab2009-05-14 00:33:10 +0000856:func:`importlib.import_module` is provided to support applications that
857determine which modules need to be loaded dynamically.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000858
859
860.. _future:
861
862Future statements
863-----------------
864
865.. index:: pair: future; statement
866
867A :dfn:`future statement` is a directive to the compiler that a particular
868module should be compiled using syntax or semantics that will be available in a
869specified future release of Python. The future statement is intended to ease
870migration to future versions of Python that introduce incompatible changes to
871the language. It allows use of the new features on a per-module basis before
872the release in which the feature becomes standard.
873
874.. productionlist:: *
875 future_statement: "from" "__future__" "import" feature ["as" name]
876 : ("," feature ["as" name])*
877 : | "from" "__future__" "import" "(" feature ["as" name]
878 : ("," feature ["as" name])* [","] ")"
879 feature: identifier
880 name: identifier
881
882A future statement must appear near the top of the module. The only lines that
883can appear before a future statement are:
884
885* the module docstring (if any),
886* comments,
887* blank lines, and
888* other future statements.
889
Benjamin Petersonf660a532008-10-09 20:54:43 +0000890The features recognized by Python 2.6 are ``unicode_literals``,
891``print_function``, ``absolute_import``, ``division``, ``generators``,
892``nested_scopes`` and ``with_statement``. ``generators``, ``with_statement``,
893``nested_scopes`` are redundant in Python version 2.6 and above because they are
894always enabled.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000895
896A future statement is recognized and treated specially at compile time: Changes
897to the semantics of core constructs are often implemented by generating
898different code. It may even be the case that a new feature introduces new
899incompatible syntax (such as a new reserved word), in which case the compiler
900may need to parse the module differently. Such decisions cannot be pushed off
901until runtime.
902
903For any given release, the compiler knows which feature names have been defined,
904and raises a compile-time error if a future statement contains a feature not
905known to it.
906
907The direct runtime semantics are the same as for any import statement: there is
908a standard module :mod:`__future__`, described later, and it will be imported in
909the usual way at the time the future statement is executed.
910
911The interesting runtime semantics depend on the specific feature enabled by the
912future statement.
913
914Note that there is nothing special about the statement::
915
916 import __future__ [as name]
917
918That is not a future statement; it's an ordinary import statement with no
919special semantics or syntax restrictions.
920
Georg Brandld7d4fd72009-07-26 14:37:28 +0000921Code compiled by an :keyword:`exec` statement or calls to the built-in functions
Georg Brandl8ec7f652007-08-15 14:28:01 +0000922:func:`compile` and :func:`execfile` that occur in a module :mod:`M` containing
923a future statement will, by default, use the new syntax or semantics associated
924with the future statement. This can, starting with Python 2.2 be controlled by
925optional arguments to :func:`compile` --- see the documentation of that function
926for details.
927
928A future statement typed at an interactive interpreter prompt will take effect
929for the rest of the interpreter session. If an interpreter is started with the
930:option:`-i` option, is passed a script name to execute, and the script includes
931a future statement, it will be in effect in the interactive session started
932after the script is executed.
933
Georg Brandl508c4232009-04-23 08:52:03 +0000934.. seealso::
935
936 :pep:`236` - Back to the __future__
937 The original proposal for the __future__ mechanism.
938
Georg Brandl8ec7f652007-08-15 14:28:01 +0000939
940.. _global:
941
942The :keyword:`global` statement
943===============================
944
Georg Brandl62658332008-01-05 19:29:45 +0000945.. index::
946 statement: global
947 triple: global; name; binding
Georg Brandl8ec7f652007-08-15 14:28:01 +0000948
949.. productionlist::
950 global_stmt: "global" `identifier` ("," `identifier`)*
951
Georg Brandl8ec7f652007-08-15 14:28:01 +0000952The :keyword:`global` statement is a declaration which holds for the entire
953current code block. It means that the listed identifiers are to be interpreted
954as globals. It would be impossible to assign to a global variable without
955:keyword:`global`, although free variables may refer to globals without being
956declared global.
957
958Names listed in a :keyword:`global` statement must not be used in the same code
959block textually preceding that :keyword:`global` statement.
960
961Names listed in a :keyword:`global` statement must not be defined as formal
962parameters or in a :keyword:`for` loop control target, :keyword:`class`
963definition, function definition, or :keyword:`import` statement.
964
Georg Brandl6c14e582009-10-22 11:48:10 +0000965.. impl-detail::
966
967 The current implementation does not enforce the latter two restrictions, but
968 programs should not abuse this freedom, as future implementations may enforce
969 them or silently change the meaning of the program.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000970
971.. index::
972 statement: exec
973 builtin: eval
974 builtin: execfile
975 builtin: compile
976
977**Programmer's note:** the :keyword:`global` is a directive to the parser. It
978applies only to code parsed at the same time as the :keyword:`global` statement.
979In particular, a :keyword:`global` statement contained in an :keyword:`exec`
980statement does not affect the code block *containing* the :keyword:`exec`
981statement, and code contained in an :keyword:`exec` statement is unaffected by
982:keyword:`global` statements in the code containing the :keyword:`exec`
983statement. The same applies to the :func:`eval`, :func:`execfile` and
984:func:`compile` functions.
985
986
987.. _exec:
988
989The :keyword:`exec` statement
990=============================
991
992.. index:: statement: exec
993
994.. productionlist::
995 exec_stmt: "exec" `or_expr` ["in" `expression` ["," `expression`]]
996
997This statement supports dynamic execution of Python code. The first expression
Benjamin Petersonb44c8612013-09-01 19:06:35 -0400998should evaluate to either a Unicode string, a *Latin-1* encoded string, an open
999file object, a code object, or a tuple. If it is a string, the string is parsed
1000as a suite of Python statements which is then executed (unless a syntax error
1001occurs). [#]_ If it is an open file, the file is parsed until EOF and executed.
1002If it is a code object, it is simply executed. For the interpretation of a
1003tuple, see below. In all cases, the code that's executed is expected to be
1004valid as file input (see section :ref:`file-input`). Be aware that the
1005:keyword:`return` and :keyword:`yield` statements may not be used outside of
1006function definitions even within the context of code passed to the
1007:keyword:`exec` statement.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001008
1009In all cases, if the optional parts are omitted, the code is executed in the
Mark Dickinson16587972012-11-25 13:25:57 +00001010current scope. If only the first expression after ``in`` is specified,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001011it should be a dictionary, which will be used for both the global and the local
1012variables. If two expressions are given, they are used for the global and local
1013variables, respectively. If provided, *locals* can be any mapping object.
Terry Jan Reedy45ed0122012-07-08 17:35:26 -04001014Remember that at module level, globals and locals are the same dictionary. If
1015two separate objects are given as *globals* and *locals*, the code will be
1016executed as if it were embedded in a class definition.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001017
Mark Dickinson16587972012-11-25 13:25:57 +00001018The first expression may also be a tuple of length 2 or 3. In this case, the
1019optional parts must be omitted. The form ``exec(expr, globals)`` is equivalent
1020to ``exec expr in globals``, while the form ``exec(expr, globals, locals)`` is
1021equivalent to ``exec expr in globals, locals``. The tuple form of ``exec``
1022provides compatibility with Python 3, where ``exec`` is a function rather than
1023a statement.
1024
Georg Brandl8ec7f652007-08-15 14:28:01 +00001025.. versionchanged:: 2.4
Georg Brandl62658332008-01-05 19:29:45 +00001026 Formerly, *locals* was required to be a dictionary.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001027
1028.. index::
1029 single: __builtins__
1030 module: __builtin__
1031
1032As a side effect, an implementation may insert additional keys into the
1033dictionaries given besides those corresponding to variable names set by the
1034executed code. For example, the current implementation may add a reference to
1035the dictionary of the built-in module :mod:`__builtin__` under the key
1036``__builtins__`` (!).
1037
1038.. index::
1039 builtin: eval
1040 builtin: globals
1041 builtin: locals
1042
1043**Programmer's hints:** dynamic evaluation of expressions is supported by the
1044built-in function :func:`eval`. The built-in functions :func:`globals` and
1045:func:`locals` return the current global and local dictionary, respectively,
1046which may be useful to pass around for use by :keyword:`exec`.
1047
Georg Brandl8ec7f652007-08-15 14:28:01 +00001048
Georg Brandl268d85d2009-03-31 16:54:38 +00001049.. rubric:: Footnotes
1050
1051.. [#] Note that the parser only accepts the Unix-style end of line convention.
R David Murray5618aaa2012-08-15 11:15:39 -04001052 If you are reading the code from a file, make sure to use
1053 :term:`universal newlines` mode to convert Windows or Mac-style newlines.