blob: be1d10e4a4902f67b0429551593d9e1cdca12a12 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001
2.. _compound:
3
4*******************
5Compound statements
6*******************
7
8.. index:: pair: compound; statement
9
10Compound statements contain (groups of) other statements; they affect or control
11the execution of those other statements in some way. In general, compound
12statements span multiple lines, although in simple incarnations a whole compound
13statement may be contained in one line.
14
15The :keyword:`if`, :keyword:`while` and :keyword:`for` statements implement
16traditional control flow constructs. :keyword:`try` specifies exception
17handlers and/or cleanup code for a group of statements. Function and class
18definitions are also syntactically compound statements.
19
20.. index::
21 single: clause
22 single: suite
23
24Compound statements consist of one or more 'clauses.' A clause consists of a
25header and a 'suite.' The clause headers of a particular compound statement are
26all at the same indentation level. Each clause header begins with a uniquely
27identifying keyword and ends with a colon. A suite is a group of statements
28controlled by a clause. A suite can be one or more semicolon-separated simple
29statements on the same line as the header, following the header's colon, or it
30can be one or more indented statements on subsequent lines. Only the latter
31form of suite can contain nested compound statements; the following is illegal,
32mostly because it wouldn't be clear to which :keyword:`if` clause a following
33:keyword:`else` clause would belong: ::
34
35 if test1: if test2: print x
36
37Also note that the semicolon binds tighter than the colon in this context, so
38that in the following example, either all or none of the :keyword:`print`
39statements are executed::
40
41 if x < y < z: print x; print y; print z
42
43Summarizing:
44
45.. productionlist::
46 compound_stmt: `if_stmt`
47 : | `while_stmt`
48 : | `for_stmt`
49 : | `try_stmt`
50 : | `with_stmt`
51 : | `funcdef`
52 : | `classdef`
Andrew M. Kuchlingd51e8422008-03-13 11:07:35 +000053 : | `decorated`
Georg Brandl8ec7f652007-08-15 14:28:01 +000054 suite: `stmt_list` NEWLINE | NEWLINE INDENT `statement`+ DEDENT
55 statement: `stmt_list` NEWLINE | `compound_stmt`
56 stmt_list: `simple_stmt` (";" `simple_stmt`)* [";"]
57
58.. index::
59 single: NEWLINE token
60 single: DEDENT token
61 pair: dangling; else
62
63Note that statements always end in a ``NEWLINE`` possibly followed by a
64``DEDENT``. Also note that optional continuation clauses always begin with a
65keyword that cannot start a statement, thus there are no ambiguities (the
66'dangling :keyword:`else`' problem is solved in Python by requiring nested
67:keyword:`if` statements to be indented).
68
69The formatting of the grammar rules in the following sections places each clause
70on a separate line for clarity.
71
72
73.. _if:
Georg Brandlb19be572007-12-29 10:57:00 +000074.. _elif:
75.. _else:
Georg Brandl8ec7f652007-08-15 14:28:01 +000076
77The :keyword:`if` statement
78===========================
79
Georg Brandl62658332008-01-05 19:29:45 +000080.. index::
81 statement: if
82 keyword: elif
83 keyword: else
Georg Brandl8ec7f652007-08-15 14:28:01 +000084
85The :keyword:`if` statement is used for conditional execution:
86
87.. productionlist::
88 if_stmt: "if" `expression` ":" `suite`
89 : ( "elif" `expression` ":" `suite` )*
90 : ["else" ":" `suite`]
91
Georg Brandl8ec7f652007-08-15 14:28:01 +000092It selects exactly one of the suites by evaluating the expressions one by one
93until one is found to be true (see section :ref:`booleans` for the definition of
94true and false); then that suite is executed (and no other part of the
95:keyword:`if` statement is executed or evaluated). If all expressions are
96false, the suite of the :keyword:`else` clause, if present, is executed.
97
98
99.. _while:
100
101The :keyword:`while` statement
102==============================
103
104.. index::
105 statement: while
106 pair: loop; statement
Georg Brandl62658332008-01-05 19:29:45 +0000107 keyword: else
Georg Brandl8ec7f652007-08-15 14:28:01 +0000108
109The :keyword:`while` statement is used for repeated execution as long as an
110expression is true:
111
112.. productionlist::
113 while_stmt: "while" `expression` ":" `suite`
114 : ["else" ":" `suite`]
115
Georg Brandl8ec7f652007-08-15 14:28:01 +0000116This repeatedly tests the expression and, if it is true, executes the first
117suite; if the expression is false (which may be the first time it is tested) the
118suite of the :keyword:`else` clause, if present, is executed and the loop
119terminates.
120
121.. index::
122 statement: break
123 statement: continue
124
125A :keyword:`break` statement executed in the first suite terminates the loop
126without executing the :keyword:`else` clause's suite. A :keyword:`continue`
127statement executed in the first suite skips the rest of the suite and goes back
128to testing the expression.
129
130
131.. _for:
132
133The :keyword:`for` statement
134============================
135
136.. index::
137 statement: for
138 pair: loop; statement
Georg Brandl62658332008-01-05 19:29:45 +0000139 keyword: in
140 keyword: else
141 pair: target; list
142 object: sequence
Georg Brandl8ec7f652007-08-15 14:28:01 +0000143
144The :keyword:`for` statement is used to iterate over the elements of a sequence
145(such as a string, tuple or list) or other iterable object:
146
147.. productionlist::
148 for_stmt: "for" `target_list` "in" `expression_list` ":" `suite`
149 : ["else" ":" `suite`]
150
Georg Brandl8ec7f652007-08-15 14:28:01 +0000151The expression list is evaluated once; it should yield an iterable object. An
152iterator is created for the result of the ``expression_list``. The suite is
153then executed once for each item provided by the iterator, in the order of
154ascending indices. Each item in turn is assigned to the target list using the
155standard rules for assignments, and then the suite is executed. When the items
156are exhausted (which is immediately when the sequence is empty), the suite in
157the :keyword:`else` clause, if present, is executed, and the loop terminates.
158
159.. index::
160 statement: break
161 statement: continue
162
163A :keyword:`break` statement executed in the first suite terminates the loop
164without executing the :keyword:`else` clause's suite. A :keyword:`continue`
165statement executed in the first suite skips the rest of the suite and continues
166with the next item, or with the :keyword:`else` clause if there was no next
167item.
168
169The suite may assign to the variable(s) in the target list; this does not affect
170the next item assigned to it.
171
172.. index::
173 builtin: range
174 pair: Pascal; language
175
176The target list is not deleted when the loop is finished, but if the sequence is
177empty, it will not have been assigned to at all by the loop. Hint: the built-in
178function :func:`range` returns a sequence of integers suitable to emulate the
179effect of Pascal's ``for i := a to b do``; e.g., ``range(3)`` returns the list
180``[0, 1, 2]``.
181
182.. warning::
183
184 .. index::
185 single: loop; over mutable sequence
186 single: mutable sequence; loop over
187
188 There is a subtlety when the sequence is being modified by the loop (this can
189 only occur for mutable sequences, i.e. lists). An internal counter is used to
190 keep track of which item is used next, and this is incremented on each
191 iteration. When this counter has reached the length of the sequence the loop
192 terminates. This means that if the suite deletes the current (or a previous)
193 item from the sequence, the next item will be skipped (since it gets the index
194 of the current item which has already been treated). Likewise, if the suite
195 inserts an item in the sequence before the current item, the current item will
196 be treated again the next time through the loop. This can lead to nasty bugs
197 that can be avoided by making a temporary copy using a slice of the whole
198 sequence, e.g.,
199
200::
201
202 for x in a[:]:
203 if x < 0: a.remove(x)
204
205
206.. _try:
Georg Brandlb19be572007-12-29 10:57:00 +0000207.. _except:
208.. _finally:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000209
210The :keyword:`try` statement
211============================
212
Georg Brandl62658332008-01-05 19:29:45 +0000213.. index::
214 statement: try
215 keyword: except
216 keyword: finally
Georg Brandl8ec7f652007-08-15 14:28:01 +0000217
218The :keyword:`try` statement specifies exception handlers and/or cleanup code
219for a group of statements:
220
221.. productionlist::
222 try_stmt: try1_stmt | try2_stmt
223 try1_stmt: "try" ":" `suite`
224 : ("except" [`expression` ["," `target`]] ":" `suite`)+
225 : ["else" ":" `suite`]
226 : ["finally" ":" `suite`]
227 try2_stmt: "try" ":" `suite`
228 : "finally" ":" `suite`
229
230.. versionchanged:: 2.5
231 In previous versions of Python, :keyword:`try`...\ :keyword:`except`...\
232 :keyword:`finally` did not work. :keyword:`try`...\ :keyword:`except` had to be
233 nested in :keyword:`try`...\ :keyword:`finally`.
234
Georg Brandl8ec7f652007-08-15 14:28:01 +0000235The :keyword:`except` clause(s) specify one or more exception handlers. When no
236exception occurs in the :keyword:`try` clause, no exception handler is executed.
237When an exception occurs in the :keyword:`try` suite, a search for an exception
238handler is started. This search inspects the except clauses in turn until one
239is found that matches the exception. An expression-less except clause, if
240present, must be last; it matches any exception. For an except clause with an
241expression, that expression is evaluated, and the clause matches the exception
242if the resulting object is "compatible" with the exception. An object is
243compatible with an exception if it is the class or a base class of the exception
244object, a tuple containing an item compatible with the exception, or, in the
245(deprecated) case of string exceptions, is the raised string itself (note that
246the object identities must match, i.e. it must be the same string object, not
247just a string with the same value).
248
249If no except clause matches the exception, the search for an exception handler
250continues in the surrounding code and on the invocation stack. [#]_
251
252If the evaluation of an expression in the header of an except clause raises an
253exception, the original search for a handler is canceled and a search starts for
254the new exception in the surrounding code and on the call stack (it is treated
255as if the entire :keyword:`try` statement raised the exception).
256
257When a matching except clause is found, the exception is assigned to the target
258specified in that except clause, if present, and the except clause's suite is
259executed. All except clauses must have an executable block. When the end of
260this block is reached, execution continues normally after the entire try
261statement. (This means that if two nested handlers exist for the same
262exception, and the exception occurs in the try clause of the inner handler, the
263outer handler will not handle the exception.)
264
265.. index::
266 module: sys
267 object: traceback
268 single: exc_type (in module sys)
269 single: exc_value (in module sys)
270 single: exc_traceback (in module sys)
271
272Before an except clause's suite is executed, details about the exception are
273assigned to three variables in the :mod:`sys` module: ``sys.exc_type`` receives
274the object identifying the exception; ``sys.exc_value`` receives the exception's
275parameter; ``sys.exc_traceback`` receives a traceback object (see section
276:ref:`types`) identifying the point in the program where the exception
277occurred. These details are also available through the :func:`sys.exc_info`
278function, which returns a tuple ``(exc_type, exc_value, exc_traceback)``. Use
279of the corresponding variables is deprecated in favor of this function, since
280their use is unsafe in a threaded program. As of Python 1.5, the variables are
281restored to their previous values (before the call) when returning from a
282function that handled an exception.
283
284.. index::
285 keyword: else
286 statement: return
287 statement: break
288 statement: continue
289
290The optional :keyword:`else` clause is executed if and when control flows off
291the end of the :keyword:`try` clause. [#]_ Exceptions in the :keyword:`else`
292clause are not handled by the preceding :keyword:`except` clauses.
293
294.. index:: keyword: finally
295
296If :keyword:`finally` is present, it specifies a 'cleanup' handler. The
297:keyword:`try` clause is executed, including any :keyword:`except` and
298:keyword:`else` clauses. If an exception occurs in any of the clauses and is
299not handled, the exception is temporarily saved. The :keyword:`finally` clause
300is executed. If there is a saved exception, it is re-raised at the end of the
301:keyword:`finally` clause. If the :keyword:`finally` clause raises another
302exception or executes a :keyword:`return` or :keyword:`break` statement, the
303saved exception is lost. The exception information is not available to the
304program during execution of the :keyword:`finally` clause.
305
306.. index::
307 statement: return
308 statement: break
309 statement: continue
310
311When a :keyword:`return`, :keyword:`break` or :keyword:`continue` statement is
312executed in the :keyword:`try` suite of a :keyword:`try`...\ :keyword:`finally`
313statement, the :keyword:`finally` clause is also executed 'on the way out.' A
314:keyword:`continue` statement is illegal in the :keyword:`finally` clause. (The
315reason is a problem with the current implementation --- this restriction may be
316lifted in the future).
317
318Additional information on exceptions can be found in section :ref:`exceptions`,
319and information on using the :keyword:`raise` statement to generate exceptions
320may be found in section :ref:`raise`.
321
322
323.. _with:
Georg Brandlb19be572007-12-29 10:57:00 +0000324.. _as:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000325
326The :keyword:`with` statement
327=============================
328
329.. index:: statement: with
330
331.. versionadded:: 2.5
332
333The :keyword:`with` statement is used to wrap the execution of a block with
334methods defined by a context manager (see section :ref:`context-managers`). This
335allows common :keyword:`try`...\ :keyword:`except`...\ :keyword:`finally` usage
336patterns to be encapsulated for convenient reuse.
337
338.. productionlist::
339 with_stmt: "with" `expression` ["as" `target`] ":" `suite`
340
341The execution of the :keyword:`with` statement proceeds as follows:
342
343#. The context expression is evaluated to obtain a context manager.
344
345#. The context manager's :meth:`__enter__` method is invoked.
346
347#. If a target was included in the :keyword:`with` statement, the return value
348 from :meth:`__enter__` is assigned to it.
349
350 .. note::
351
352 The :keyword:`with` statement guarantees that if the :meth:`__enter__` method
353 returns without an error, then :meth:`__exit__` will always be called. Thus, if
354 an error occurs during the assignment to the target list, it will be treated the
355 same as an error occurring within the suite would be. See step 5 below.
356
357#. The suite is executed.
358
359#. The context manager's :meth:`__exit__` method is invoked. If an exception
360 caused the suite to be exited, its type, value, and traceback are passed as
361 arguments to :meth:`__exit__`. Otherwise, three :const:`None` arguments are
362 supplied.
363
364 If the suite was exited due to an exception, and the return value from the
365 :meth:`__exit__` method was false, the exception is reraised. If the return
366 value was true, the exception is suppressed, and execution continues with the
367 statement following the :keyword:`with` statement.
368
369 If the suite was exited for any reason other than an exception, the return value
370 from :meth:`__exit__` is ignored, and execution proceeds at the normal location
371 for the kind of exit that was taken.
372
373.. note::
374
375 In Python 2.5, the :keyword:`with` statement is only allowed when the
Georg Brandl62658332008-01-05 19:29:45 +0000376 ``with_statement`` feature has been enabled. It is always enabled in
377 Python 2.6.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000378
379.. seealso::
380
381 :pep:`0343` - The "with" statement
382 The specification, background, and examples for the Python :keyword:`with`
383 statement.
384
385
386.. _function:
Georg Brandlb19be572007-12-29 10:57:00 +0000387.. _def:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000388
389Function definitions
390====================
391
392.. index::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000393 statement: def
Georg Brandl62658332008-01-05 19:29:45 +0000394 pair: function; definition
395 pair: function; name
396 pair: name; binding
Georg Brandl8ec7f652007-08-15 14:28:01 +0000397 object: user-defined function
398 object: function
399
400A function definition defines a user-defined function object (see section
401:ref:`types`):
402
403.. productionlist::
Andrew M. Kuchlingd51e8422008-03-13 11:07:35 +0000404 decorated: decorators (classdef | funcdef)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000405 decorators: `decorator`+
406 decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
Andrew M. Kuchlingd51e8422008-03-13 11:07:35 +0000407 funcdef: "def" `funcname` "(" [`parameter_list`] ")" ":" `suite`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000408 dotted_name: `identifier` ("." `identifier`)*
409 parameter_list: (`defparameter` ",")*
410 : ( "*" `identifier` [, "**" `identifier`]
411 : | "**" `identifier`
412 : | `defparameter` [","] )
413 defparameter: `parameter` ["=" `expression`]
414 sublist: `parameter` ("," `parameter`)* [","]
415 parameter: `identifier` | "(" `sublist` ")"
416 funcname: `identifier`
417
Georg Brandl8ec7f652007-08-15 14:28:01 +0000418A function definition is an executable statement. Its execution binds the
419function name in the current local namespace to a function object (a wrapper
420around the executable code for the function). This function object contains a
421reference to the current global namespace as the global namespace to be used
422when the function is called.
423
424The function definition does not execute the function body; this gets executed
425only when the function is called.
426
Georg Brandl584265b2007-12-02 14:58:50 +0000427A function definition may be wrapped by one or more :term:`decorator` expressions.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000428Decorator expressions are evaluated when the function is defined, in the scope
429that contains the function definition. The result must be a callable, which is
430invoked with the function object as the only argument. The returned value is
431bound to the function name instead of the function object. Multiple decorators
432are applied in nested fashion. For example, the following code::
433
434 @f1(arg)
435 @f2
436 def func(): pass
437
438is equivalent to::
439
440 def func(): pass
441 func = f1(arg)(f2(func))
442
443.. index:: triple: default; parameter; value
444
445When one or more top-level parameters have the form *parameter* ``=``
446*expression*, the function is said to have "default parameter values." For a
447parameter with a default value, the corresponding argument may be omitted from a
448call, in which case the parameter's default value is substituted. If a
449parameter has a default value, all following parameters must also have a default
450value --- this is a syntactic restriction that is not expressed by the grammar.
451
452**Default parameter values are evaluated when the function definition is
453executed.** This means that the expression is evaluated once, when the function
454is defined, and that that same "pre-computed" value is used for each call. This
455is especially important to understand when a default parameter is a mutable
456object, such as a list or a dictionary: if the function modifies the object
457(e.g. by appending an item to a list), the default value is in effect modified.
458This is generally not what was intended. A way around this is to use ``None``
459as the default, and explicitly test for it in the body of the function, e.g.::
460
461 def whats_on_the_telly(penguin=None):
462 if penguin is None:
463 penguin = []
464 penguin.append("property of the zoo")
465 return penguin
466
467Function call semantics are described in more detail in section :ref:`calls`. A
468function call always assigns values to all parameters mentioned in the parameter
469list, either from position arguments, from keyword arguments, or from default
470values. If the form "``*identifier``" is present, it is initialized to a tuple
471receiving any excess positional parameters, defaulting to the empty tuple. If
472the form "``**identifier``" is present, it is initialized to a new dictionary
473receiving any excess keyword arguments, defaulting to a new empty dictionary.
474
475.. index:: pair: lambda; form
476
477It is also possible to create anonymous functions (functions not bound to a
478name), for immediate use in expressions. This uses lambda forms, described in
479section :ref:`lambda`. Note that the lambda form is merely a shorthand for a
480simplified function definition; a function defined in a ":keyword:`def`"
481statement can be passed around or assigned to another name just like a function
482defined by a lambda form. The ":keyword:`def`" form is actually more powerful
483since it allows the execution of multiple statements.
484
485**Programmer's note:** Functions are first-class objects. A "``def``" form
486executed inside a function definition defines a local function that can be
487returned or passed around. Free variables used in the nested function can
488access the local variables of the function containing the def. See section
489:ref:`naming` for details.
490
491
492.. _class:
493
494Class definitions
495=================
496
497.. index::
Georg Brandl62658332008-01-05 19:29:45 +0000498 object: class
Georg Brandl8ec7f652007-08-15 14:28:01 +0000499 statement: class
Georg Brandl62658332008-01-05 19:29:45 +0000500 pair: class; definition
501 pair: class; name
502 pair: name; binding
503 pair: execution; frame
504 single: inheritance
Georg Brandl8ec7f652007-08-15 14:28:01 +0000505
506A class definition defines a class object (see section :ref:`types`):
507
508.. productionlist::
509 classdef: "class" `classname` [`inheritance`] ":" `suite`
510 inheritance: "(" [`expression_list`] ")"
511 classname: `identifier`
512
Georg Brandl8ec7f652007-08-15 14:28:01 +0000513A class definition is an executable statement. It first evaluates the
514inheritance list, if present. Each item in the inheritance list should evaluate
515to a class object or class type which allows subclassing. The class's suite is
516then executed in a new execution frame (see section :ref:`naming`), using a
517newly created local namespace and the original global namespace. (Usually, the
518suite contains only function definitions.) When the class's suite finishes
519execution, its execution frame is discarded but its local namespace is saved. A
520class object is then created using the inheritance list for the base classes and
521the saved local namespace for the attribute dictionary. The class name is bound
522to this class object in the original local namespace.
523
524**Programmer's note:** Variables defined in the class definition are class
Georg Brandl62658332008-01-05 19:29:45 +0000525variables; they are shared by all instances. To create instance variables, they
526can be set in a method with ``self.name = value``. Both class and instance
527variables are accessible through the notation "``self.name``", and an instance
528variable hides a class variable with the same name when accessed in this way.
529Class variables can be used as defaults for instance variables, but using
530mutable values there can lead to unexpected results. For :term:`new-style
531class`\es, descriptors can be used to create instance variables with different
Georg Brandla7395032007-10-21 12:15:05 +0000532implementation details.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000533
Andrew M. Kuchlingd51e8422008-03-13 11:07:35 +0000534Class definitions, like function definitions, may be wrapped by one or
535more :term:`decorator` expressions. The evaluation rules for the
536decorator expressions are the same as for functions. The result must
537be a class object, which is then bound to the class name.
538
Georg Brandl8ec7f652007-08-15 14:28:01 +0000539.. rubric:: Footnotes
540
Georg Brandl907a7202008-02-22 12:31:45 +0000541.. [#] The exception is propagated to the invocation stack only if there is no
Georg Brandl8ec7f652007-08-15 14:28:01 +0000542 :keyword:`finally` clause that negates the exception.
543
544.. [#] Currently, control "flows off the end" except in the case of an exception or the
545 execution of a :keyword:`return`, :keyword:`continue`, or :keyword:`break`
546 statement.