blob: 408298d031c2847dccdf8ce858d70b052246ec5b [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`
Benjamin Petersonb7b8bff2008-06-29 13:43:07 +000049 : | `try_stmt`
Georg Brandl8ec7f652007-08-15 14:28:01 +000050 : | `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`
Georg Brandl865cd642008-10-16 21:38:48 +0000224 : ("except" [`expression` [("as" | ",") `target`]] ":" `suite`)+
Georg Brandl8ec7f652007-08-15 14:28:01 +0000225 : ["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
Georg Brandle64f7382008-07-20 11:50:29 +0000425only when the function is called. [#]_
Georg Brandl8ec7f652007-08-15 14:28:01 +0000426
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000427.. index::
428 statement: @
429
Georg Brandl584265b2007-12-02 14:58:50 +0000430A function definition may be wrapped by one or more :term:`decorator` expressions.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000431Decorator expressions are evaluated when the function is defined, in the scope
432that contains the function definition. The result must be a callable, which is
433invoked with the function object as the only argument. The returned value is
434bound to the function name instead of the function object. Multiple decorators
435are applied in nested fashion. For example, the following code::
436
437 @f1(arg)
438 @f2
439 def func(): pass
440
441is equivalent to::
442
443 def func(): pass
444 func = f1(arg)(f2(func))
445
446.. index:: triple: default; parameter; value
447
448When one or more top-level parameters have the form *parameter* ``=``
449*expression*, the function is said to have "default parameter values." For a
450parameter with a default value, the corresponding argument may be omitted from a
451call, in which case the parameter's default value is substituted. If a
452parameter has a default value, all following parameters must also have a default
453value --- this is a syntactic restriction that is not expressed by the grammar.
454
455**Default parameter values are evaluated when the function definition is
456executed.** This means that the expression is evaluated once, when the function
457is defined, and that that same "pre-computed" value is used for each call. This
458is especially important to understand when a default parameter is a mutable
459object, such as a list or a dictionary: if the function modifies the object
460(e.g. by appending an item to a list), the default value is in effect modified.
461This is generally not what was intended. A way around this is to use ``None``
462as the default, and explicitly test for it in the body of the function, e.g.::
463
464 def whats_on_the_telly(penguin=None):
465 if penguin is None:
466 penguin = []
467 penguin.append("property of the zoo")
468 return penguin
469
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000470.. index::
471 statement: *
472 statement: **
473
Georg Brandl8ec7f652007-08-15 14:28:01 +0000474Function call semantics are described in more detail in section :ref:`calls`. A
475function call always assigns values to all parameters mentioned in the parameter
476list, either from position arguments, from keyword arguments, or from default
477values. If the form "``*identifier``" is present, it is initialized to a tuple
478receiving any excess positional parameters, defaulting to the empty tuple. If
479the form "``**identifier``" is present, it is initialized to a new dictionary
480receiving any excess keyword arguments, defaulting to a new empty dictionary.
481
482.. index:: pair: lambda; form
483
484It is also possible to create anonymous functions (functions not bound to a
485name), for immediate use in expressions. This uses lambda forms, described in
486section :ref:`lambda`. Note that the lambda form is merely a shorthand for a
487simplified function definition; a function defined in a ":keyword:`def`"
488statement can be passed around or assigned to another name just like a function
489defined by a lambda form. The ":keyword:`def`" form is actually more powerful
490since it allows the execution of multiple statements.
491
492**Programmer's note:** Functions are first-class objects. A "``def``" form
493executed inside a function definition defines a local function that can be
494returned or passed around. Free variables used in the nested function can
495access the local variables of the function containing the def. See section
496:ref:`naming` for details.
497
498
499.. _class:
500
501Class definitions
502=================
503
504.. index::
Georg Brandl62658332008-01-05 19:29:45 +0000505 object: class
Georg Brandl8ec7f652007-08-15 14:28:01 +0000506 statement: class
Georg Brandl62658332008-01-05 19:29:45 +0000507 pair: class; definition
508 pair: class; name
509 pair: name; binding
510 pair: execution; frame
511 single: inheritance
Georg Brandle64f7382008-07-20 11:50:29 +0000512 single: docstring
Georg Brandl8ec7f652007-08-15 14:28:01 +0000513
514A class definition defines a class object (see section :ref:`types`):
515
516.. productionlist::
517 classdef: "class" `classname` [`inheritance`] ":" `suite`
518 inheritance: "(" [`expression_list`] ")"
519 classname: `identifier`
520
Georg Brandl8ec7f652007-08-15 14:28:01 +0000521A class definition is an executable statement. It first evaluates the
522inheritance list, if present. Each item in the inheritance list should evaluate
523to a class object or class type which allows subclassing. The class's suite is
524then executed in a new execution frame (see section :ref:`naming`), using a
525newly created local namespace and the original global namespace. (Usually, the
526suite contains only function definitions.) When the class's suite finishes
Georg Brandle64f7382008-07-20 11:50:29 +0000527execution, its execution frame is discarded but its local namespace is
528saved. [#]_ A class object is then created using the inheritance list for the
529base classes and the saved local namespace for the attribute dictionary. The
530class name is bound to this class object in the original local namespace.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000531
532**Programmer's note:** Variables defined in the class definition are class
Georg Brandl62658332008-01-05 19:29:45 +0000533variables; they are shared by all instances. To create instance variables, they
534can be set in a method with ``self.name = value``. Both class and instance
535variables are accessible through the notation "``self.name``", and an instance
536variable hides a class variable with the same name when accessed in this way.
537Class variables can be used as defaults for instance variables, but using
538mutable values there can lead to unexpected results. For :term:`new-style
539class`\es, descriptors can be used to create instance variables with different
Georg Brandla7395032007-10-21 12:15:05 +0000540implementation details.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000541
Benjamin Peterson6e4856a2008-06-28 23:06:49 +0000542Class definitions, like function definitions, may be wrapped by one or more
543:term:`decorator` expressions. The evaluation rules for the decorator
544expressions are the same as for functions. The result must be a class object,
545which is then bound to the class name.
Andrew M. Kuchlingd51e8422008-03-13 11:07:35 +0000546
Georg Brandl8ec7f652007-08-15 14:28:01 +0000547.. rubric:: Footnotes
548
Georg Brandl907a7202008-02-22 12:31:45 +0000549.. [#] The exception is propagated to the invocation stack only if there is no
Georg Brandl8ec7f652007-08-15 14:28:01 +0000550 :keyword:`finally` clause that negates the exception.
551
552.. [#] Currently, control "flows off the end" except in the case of an exception or the
553 execution of a :keyword:`return`, :keyword:`continue`, or :keyword:`break`
554 statement.
Georg Brandle64f7382008-07-20 11:50:29 +0000555
556.. [#] A string literal appearing as the first statement in the function body is
557 transformed into the function's ``__doc__`` attribute and therefore the
558 function's :term:`docstring`.
559
560.. [#] A string literal appearing as the first statement in the class body is
561 transformed into the namespace's ``__doc__`` item and therefore the class's
562 :term:`docstring`.