~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to Doc/reference/compound_stmts.rst

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.. _compound:
 
2
 
 
3
*******************
 
4
Compound statements
 
5
*******************
 
6
 
 
7
.. index:: pair: compound; statement
 
8
 
 
9
Compound statements contain (groups of) other statements; they affect or control
 
10
the execution of those other statements in some way.  In general, compound
 
11
statements span multiple lines, although in simple incarnations a whole compound
 
12
statement may be contained in one line.
 
13
 
 
14
The :keyword:`if`, :keyword:`while` and :keyword:`for` statements implement
 
15
traditional control flow constructs.  :keyword:`try` specifies exception
 
16
handlers and/or cleanup code for a group of statements, while the
 
17
:keyword:`with` statement allows the execution of initialization and
 
18
finalization code around a block of code.  Function and class definitions are
 
19
also syntactically compound statements.
 
20
 
 
21
.. index::
 
22
   single: clause
 
23
   single: suite
 
24
 
 
25
Compound statements consist of one or more 'clauses.'  A clause consists of a
 
26
header and a 'suite.'  The clause headers of a particular compound statement are
 
27
all at the same indentation level. Each clause header begins with a uniquely
 
28
identifying keyword and ends with a colon.  A suite is a group of statements
 
29
controlled by a clause.  A suite can be one or more semicolon-separated simple
 
30
statements on the same line as the header, following the header's colon, or it
 
31
can be one or more indented statements on subsequent lines.  Only the latter
 
32
form of suite can contain nested compound statements; the following is illegal,
 
33
mostly because it wouldn't be clear to which :keyword:`if` clause a following
 
34
:keyword:`else` clause would belong::
 
35
 
 
36
   if test1: if test2: print(x)
 
37
 
 
38
Also note that the semicolon binds tighter than the colon in this context, so
 
39
that in the following example, either all or none of the :func:`print` calls are
 
40
executed::
 
41
 
 
42
   if x < y < z: print(x); print(y); print(z)
 
43
 
 
44
Summarizing:
 
45
 
 
46
.. productionlist::
 
47
   compound_stmt: `if_stmt`
 
48
                : | `while_stmt`
 
49
                : | `for_stmt`
 
50
                : | `try_stmt`
 
51
                : | `with_stmt`
 
52
                : | `funcdef`
 
53
                : | `classdef`
 
54
   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
 
 
63
Note that statements always end in a ``NEWLINE`` possibly followed by a
 
64
``DEDENT``.  Also note that optional continuation clauses always begin with a
 
65
keyword 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
 
 
69
The formatting of the grammar rules in the following sections places each clause
 
70
on a separate line for clarity.
 
71
 
 
72
 
 
73
.. _if:
 
74
.. _elif:
 
75
.. _else:
 
76
 
 
77
The :keyword:`if` statement
 
78
===========================
 
79
 
 
80
.. index::
 
81
   statement: if
 
82
   keyword: elif
 
83
   keyword: else
 
84
           keyword: elif
 
85
           keyword: else
 
86
 
 
87
The :keyword:`if` statement is used for conditional execution:
 
88
 
 
89
.. productionlist::
 
90
   if_stmt: "if" `expression` ":" `suite`
 
91
          : ( "elif" `expression` ":" `suite` )*
 
92
          : ["else" ":" `suite`]
 
93
 
 
94
It selects exactly one of the suites by evaluating the expressions one by one
 
95
until one is found to be true (see section :ref:`booleans` for the definition of
 
96
true and false); then that suite is executed (and no other part of the
 
97
:keyword:`if` statement is executed or evaluated).  If all expressions are
 
98
false, the suite of the :keyword:`else` clause, if present, is executed.
 
99
 
 
100
 
 
101
.. _while:
 
102
 
 
103
The :keyword:`while` statement
 
104
==============================
 
105
 
 
106
.. index::
 
107
   statement: while
 
108
   keyword: else
 
109
   pair: loop; statement
 
110
   keyword: else
 
111
 
 
112
The :keyword:`while` statement is used for repeated execution as long as an
 
113
expression is true:
 
114
 
 
115
.. productionlist::
 
116
   while_stmt: "while" `expression` ":" `suite`
 
117
             : ["else" ":" `suite`]
 
118
 
 
119
This repeatedly tests the expression and, if it is true, executes the first
 
120
suite; if the expression is false (which may be the first time it is tested) the
 
121
suite of the :keyword:`else` clause, if present, is executed and the loop
 
122
terminates.
 
123
 
 
124
.. index::
 
125
   statement: break
 
126
   statement: continue
 
127
 
 
128
A :keyword:`break` statement executed in the first suite terminates the loop
 
129
without executing the :keyword:`else` clause's suite.  A :keyword:`continue`
 
130
statement executed in the first suite skips the rest of the suite and goes back
 
131
to testing the expression.
 
132
 
 
133
 
 
134
.. _for:
 
135
 
 
136
The :keyword:`for` statement
 
137
============================
 
138
 
 
139
.. index::
 
140
   statement: for
 
141
   keyword: in
 
142
   keyword: else
 
143
   pair: target; list
 
144
   pair: loop; statement
 
145
   keyword: in
 
146
   keyword: else
 
147
   pair: target; list
 
148
   object: sequence
 
149
 
 
150
The :keyword:`for` statement is used to iterate over the elements of a sequence
 
151
(such as a string, tuple or list) or other iterable object:
 
152
 
 
153
.. productionlist::
 
154
   for_stmt: "for" `target_list` "in" `expression_list` ":" `suite`
 
155
           : ["else" ":" `suite`]
 
156
 
 
157
The expression list is evaluated once; it should yield an iterable object.  An
 
158
iterator is created for the result of the ``expression_list``.  The suite is
 
159
then executed once for each item provided by the iterator, in the order of
 
160
ascending indices.  Each item in turn is assigned to the target list using the
 
161
standard rules for assignments (see :ref:`assignment`), and then the suite is
 
162
executed.  When the items are exhausted (which is immediately when the sequence
 
163
is empty or an iterator raises a :exc:`StopIteration` exception), the suite in
 
164
the :keyword:`else` clause, if present, is executed, and the loop terminates.
 
165
 
 
166
.. index::
 
167
   statement: break
 
168
   statement: continue
 
169
 
 
170
A :keyword:`break` statement executed in the first suite terminates the loop
 
171
without executing the :keyword:`else` clause's suite.  A :keyword:`continue`
 
172
statement executed in the first suite skips the rest of the suite and continues
 
173
with the next item, or with the :keyword:`else` clause if there was no next
 
174
item.
 
175
 
 
176
The suite may assign to the variable(s) in the target list; this does not affect
 
177
the next item assigned to it.
 
178
 
 
179
.. index::
 
180
   builtin: range
 
181
 
 
182
Names in the target list are not deleted when the loop is finished, but if the
 
183
sequence is empty, it will not have been assigned to at all by the loop.  Hint:
 
184
the built-in function :func:`range` returns an iterator of integers suitable to
 
185
emulate the effect of Pascal's ``for i := a to b do``; e.g., ``list(range(3))``
 
186
returns the list ``[0, 1, 2]``.
 
187
 
 
188
.. note::
 
189
 
 
190
   .. index::
 
191
      single: loop; over mutable sequence
 
192
      single: mutable sequence; loop over
 
193
 
 
194
   There is a subtlety when the sequence is being modified by the loop (this can
 
195
   only occur for mutable sequences, i.e. lists).  An internal counter is used
 
196
   to keep track of which item is used next, and this is incremented on each
 
197
   iteration.  When this counter has reached the length of the sequence the loop
 
198
   terminates.  This means that if the suite deletes the current (or a previous)
 
199
   item from the sequence, the next item will be skipped (since it gets the
 
200
   index of the current item which has already been treated).  Likewise, if the
 
201
   suite inserts an item in the sequence before the current item, the current
 
202
   item will be treated again the next time through the loop. This can lead to
 
203
   nasty bugs that can be avoided by making a temporary copy using a slice of
 
204
   the whole sequence, e.g., ::
 
205
 
 
206
      for x in a[:]:
 
207
          if x < 0: a.remove(x)
 
208
 
 
209
 
 
210
.. _try:
 
211
.. _except:
 
212
.. _finally:
 
213
 
 
214
The :keyword:`try` statement
 
215
============================
 
216
 
 
217
.. index::
 
218
   statement: try
 
219
   keyword: except
 
220
   keyword: finally
 
221
.. index:: keyword: except
 
222
 
 
223
The :keyword:`try` statement specifies exception handlers and/or cleanup code
 
224
for a group of statements:
 
225
 
 
226
.. productionlist::
 
227
   try_stmt: try1_stmt | try2_stmt
 
228
   try1_stmt: "try" ":" `suite`
 
229
            : ("except" [`expression` ["as" `target`]] ":" `suite`)+
 
230
            : ["else" ":" `suite`]
 
231
            : ["finally" ":" `suite`]
 
232
   try2_stmt: "try" ":" `suite`
 
233
            : "finally" ":" `suite`
 
234
 
 
235
 
 
236
The :keyword:`except` clause(s) specify one or more exception handlers. When no
 
237
exception occurs in the :keyword:`try` clause, no exception handler is executed.
 
238
When an exception occurs in the :keyword:`try` suite, a search for an exception
 
239
handler is started.  This search inspects the except clauses in turn until one
 
240
is found that matches the exception.  An expression-less except clause, if
 
241
present, must be last; it matches any exception.  For an except clause with an
 
242
expression, that expression is evaluated, and the clause matches the exception
 
243
if the resulting object is "compatible" with the exception.  An object is
 
244
compatible with an exception if it is the class or a base class of the exception
 
245
object or a tuple containing an item compatible with the exception.
 
246
 
 
247
If no except clause matches the exception, the search for an exception handler
 
248
continues in the surrounding code and on the invocation stack.  [#]_
 
249
 
 
250
If the evaluation of an expression in the header of an except clause raises an
 
251
exception, the original search for a handler is canceled and a search starts for
 
252
the new exception in the surrounding code and on the call stack (it is treated
 
253
as if the entire :keyword:`try` statement raised the exception).
 
254
 
 
255
When a matching except clause is found, the exception is assigned to the target
 
256
specified after the :keyword:`as` keyword in that except clause, if present, and
 
257
the except clause's suite is executed.  All except clauses must have an
 
258
executable block.  When the end of this block is reached, execution continues
 
259
normally after the entire try statement.  (This means that if two nested
 
260
handlers exist for the same exception, and the exception occurs in the try
 
261
clause of the inner handler, the outer handler will not handle the exception.)
 
262
 
 
263
When an exception has been assigned using ``as target``, it is cleared at the
 
264
end of the except clause.  This is as if ::
 
265
 
 
266
   except E as N:
 
267
       foo
 
268
 
 
269
was translated to ::
 
270
 
 
271
   except E as N:
 
272
       try:
 
273
           foo
 
274
       finally:
 
275
           del N
 
276
 
 
277
This means the exception must be assigned to a different name to be able to
 
278
refer to it after the except clause.  Exceptions are cleared because with the
 
279
traceback attached to them, they form a reference cycle with the stack frame,
 
280
keeping all locals in that frame alive until the next garbage collection occurs.
 
281
 
 
282
.. index::
 
283
   module: sys
 
284
   object: traceback
 
285
 
 
286
Before an except clause's suite is executed, details about the exception are
 
287
stored in the :mod:`sys` module and can be access via :func:`sys.exc_info`.
 
288
:func:`sys.exc_info` returns a 3-tuple consisting of the exception class, the
 
289
exception instance and a traceback object (see section :ref:`types`) identifying
 
290
the point in the program where the exception occurred.  :func:`sys.exc_info`
 
291
values are restored to their previous values (before the call) when returning
 
292
from a function that handled an exception.
 
293
 
 
294
.. index::
 
295
   keyword: else
 
296
   statement: return
 
297
   statement: break
 
298
   statement: continue
 
299
 
 
300
The optional :keyword:`else` clause is executed if and when control flows off
 
301
the end of the :keyword:`try` clause. [#]_ Exceptions in the :keyword:`else`
 
302
clause are not handled by the preceding :keyword:`except` clauses.
 
303
 
 
304
.. index:: keyword: finally
 
305
 
 
306
If :keyword:`finally` is present, it specifies a 'cleanup' handler.  The
 
307
:keyword:`try` clause is executed, including any :keyword:`except` and
 
308
:keyword:`else` clauses.  If an exception occurs in any of the clauses and is
 
309
not handled, the exception is temporarily saved. The :keyword:`finally` clause
 
310
is executed.  If there is a saved exception it is re-raised at the end of the
 
311
:keyword:`finally` clause.  If the :keyword:`finally` clause raises another
 
312
exception, the saved exception is set as the context of the new exception.
 
313
If the :keyword:`finally` clause executes a :keyword:`return` or :keyword:`break`
 
314
statement, the saved exception is discarded::
 
315
 
 
316
    def f():
 
317
        try:
 
318
            1/0
 
319
        finally:
 
320
            return 42
 
321
 
 
322
    >>> f()
 
323
    42
 
324
 
 
325
The exception information is not available to the program during execution of
 
326
the :keyword:`finally` clause.
 
327
 
 
328
.. index::
 
329
   statement: return
 
330
   statement: break
 
331
   statement: continue
 
332
 
 
333
When a :keyword:`return`, :keyword:`break` or :keyword:`continue` statement is
 
334
executed in the :keyword:`try` suite of a :keyword:`try`...\ :keyword:`finally`
 
335
statement, the :keyword:`finally` clause is also executed 'on the way out.' A
 
336
:keyword:`continue` statement is illegal in the :keyword:`finally` clause. (The
 
337
reason is a problem with the current implementation --- this restriction may be
 
338
lifted in the future).
 
339
 
 
340
Additional information on exceptions can be found in section :ref:`exceptions`,
 
341
and information on using the :keyword:`raise` statement to generate exceptions
 
342
may be found in section :ref:`raise`.
 
343
 
 
344
 
 
345
.. _with:
 
346
.. _as:
 
347
 
 
348
The :keyword:`with` statement
 
349
=============================
 
350
 
 
351
.. index:: statement: with
 
352
 
 
353
The :keyword:`with` statement is used to wrap the execution of a block with
 
354
methods defined by a context manager (see section :ref:`context-managers`).
 
355
This allows common :keyword:`try`...\ :keyword:`except`...\ :keyword:`finally`
 
356
usage patterns to be encapsulated for convenient reuse.
 
357
 
 
358
.. productionlist::
 
359
   with_stmt: "with" with_item ("," with_item)* ":" `suite`
 
360
   with_item: `expression` ["as" `target`]
 
361
 
 
362
The execution of the :keyword:`with` statement with one "item" proceeds as follows:
 
363
 
 
364
#. The context expression (the expression given in the :token:`with_item`) is
 
365
   evaluated to obtain a context manager.
 
366
 
 
367
#. The context manager's :meth:`__exit__` is loaded for later use.
 
368
 
 
369
#. The context manager's :meth:`__enter__` method is invoked.
 
370
 
 
371
#. If a target was included in the :keyword:`with` statement, the return value
 
372
   from :meth:`__enter__` is assigned to it.
 
373
 
 
374
   .. note::
 
375
 
 
376
      The :keyword:`with` statement guarantees that if the :meth:`__enter__`
 
377
      method returns without an error, then :meth:`__exit__` will always be
 
378
      called. Thus, if an error occurs during the assignment to the target list,
 
379
      it will be treated the same as an error occurring within the suite would
 
380
      be. See step 6 below.
 
381
 
 
382
#. The suite is executed.
 
383
 
 
384
#. The context manager's :meth:`__exit__` method is invoked.  If an exception
 
385
   caused the suite to be exited, its type, value, and traceback are passed as
 
386
   arguments to :meth:`__exit__`. Otherwise, three :const:`None` arguments are
 
387
   supplied.
 
388
 
 
389
   If the suite was exited due to an exception, and the return value from the
 
390
   :meth:`__exit__` method was false, the exception is reraised.  If the return
 
391
   value was true, the exception is suppressed, and execution continues with the
 
392
   statement following the :keyword:`with` statement.
 
393
 
 
394
   If the suite was exited for any reason other than an exception, the return
 
395
   value from :meth:`__exit__` is ignored, and execution proceeds at the normal
 
396
   location for the kind of exit that was taken.
 
397
 
 
398
With more than one item, the context managers are processed as if multiple
 
399
:keyword:`with` statements were nested::
 
400
 
 
401
   with A() as a, B() as b:
 
402
       suite
 
403
 
 
404
is equivalent to ::
 
405
 
 
406
   with A() as a:
 
407
       with B() as b:
 
408
           suite
 
409
 
 
410
.. versionchanged:: 3.1
 
411
   Support for multiple context expressions.
 
412
 
 
413
.. seealso::
 
414
 
 
415
   :pep:`0343` - The "with" statement
 
416
      The specification, background, and examples for the Python :keyword:`with`
 
417
      statement.
 
418
 
 
419
 
 
420
.. index::
 
421
   single: parameter; function definition
 
422
 
 
423
.. _function:
 
424
.. _def:
 
425
 
 
426
Function definitions
 
427
====================
 
428
 
 
429
.. index::
 
430
   statement: def
 
431
   pair: function; definition
 
432
   pair: function; name
 
433
   pair: name; binding
 
434
   object: user-defined function
 
435
   object: function
 
436
   pair: function; name
 
437
   pair: name; binding
 
438
 
 
439
A function definition defines a user-defined function object (see section
 
440
:ref:`types`):
 
441
 
 
442
.. productionlist::
 
443
   funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")" ["->" `expression`] ":" `suite`
 
444
   decorators: `decorator`+
 
445
   decorator: "@" `dotted_name` ["(" [`parameter_list` [","]] ")"] NEWLINE
 
446
   dotted_name: `identifier` ("." `identifier`)*
 
447
   parameter_list: (`defparameter` ",")*
 
448
                 : ( "*" [`parameter`] ("," `defparameter`)* ["," "**" `parameter`]
 
449
                 : | "**" `parameter`
 
450
                 : | `defparameter` [","] )
 
451
   parameter: `identifier` [":" `expression`]
 
452
   defparameter: `parameter` ["=" `expression`]
 
453
   funcname: `identifier`
 
454
 
 
455
 
 
456
A function definition is an executable statement.  Its execution binds the
 
457
function name in the current local namespace to a function object (a wrapper
 
458
around the executable code for the function).  This function object contains a
 
459
reference to the current global namespace as the global namespace to be used
 
460
when the function is called.
 
461
 
 
462
The function definition does not execute the function body; this gets executed
 
463
only when the function is called. [#]_
 
464
 
 
465
.. index::
 
466
  statement: @
 
467
 
 
468
A function definition may be wrapped by one or more :term:`decorator` expressions.
 
469
Decorator expressions are evaluated when the function is defined, in the scope
 
470
that contains the function definition.  The result must be a callable, which is
 
471
invoked with the function object as the only argument. The returned value is
 
472
bound to the function name instead of the function object.  Multiple decorators
 
473
are applied in nested fashion. For example, the following code ::
 
474
 
 
475
   @f1(arg)
 
476
   @f2
 
477
   def func(): pass
 
478
 
 
479
is equivalent to ::
 
480
 
 
481
   def func(): pass
 
482
   func = f1(arg)(f2(func))
 
483
 
 
484
.. index::
 
485
   triple: default; parameter; value
 
486
   single: argument; function definition
 
487
 
 
488
When one or more :term:`parameters <parameter>` have the form *parameter* ``=``
 
489
*expression*, the function is said to have "default parameter values."  For a
 
490
parameter with a default value, the corresponding :term:`argument` may be
 
491
omitted from a call, in which
 
492
case the parameter's default value is substituted.  If a parameter has a default
 
493
value, all following parameters up until the "``*``" must also have a default
 
494
value --- this is a syntactic restriction that is not expressed by the grammar.
 
495
 
 
496
**Default parameter values are evaluated from left to right when the function
 
497
definition is executed.** This means that the expression is evaluated once, when
 
498
the function is defined, and that the same "pre-computed" value is used for each
 
499
call.  This is especially important to understand when a default parameter is a
 
500
mutable object, such as a list or a dictionary: if the function modifies the
 
501
object (e.g. by appending an item to a list), the default value is in effect
 
502
modified.  This is generally not what was intended.  A way around this is to use
 
503
``None`` as the default, and explicitly test for it in the body of the function,
 
504
e.g.::
 
505
 
 
506
   def whats_on_the_telly(penguin=None):
 
507
       if penguin is None:
 
508
           penguin = []
 
509
       penguin.append("property of the zoo")
 
510
       return penguin
 
511
 
 
512
.. index::
 
513
  statement: *
 
514
  statement: **
 
515
 
 
516
Function call semantics are described in more detail in section :ref:`calls`. A
 
517
function call always assigns values to all parameters mentioned in the parameter
 
518
list, either from position arguments, from keyword arguments, or from default
 
519
values.  If the form "``*identifier``" is present, it is initialized to a tuple
 
520
receiving any excess positional parameters, defaulting to the empty tuple.  If
 
521
the form "``**identifier``" is present, it is initialized to a new dictionary
 
522
receiving any excess keyword arguments, defaulting to a new empty dictionary.
 
523
Parameters after "``*``" or "``*identifier``" are keyword-only parameters and
 
524
may only be passed used keyword arguments.
 
525
 
 
526
.. index:: pair: function; annotations
 
527
 
 
528
Parameters may have annotations of the form "``: expression``" following the
 
529
parameter name.  Any parameter may have an annotation even those of the form
 
530
``*identifier`` or ``**identifier``.  Functions may have "return" annotation of
 
531
the form "``-> expression``" after the parameter list.  These annotations can be
 
532
any valid Python expression and are evaluated when the function definition is
 
533
executed.  Annotations may be evaluated in a different order than they appear in
 
534
the source code.  The presence of annotations does not change the semantics of a
 
535
function.  The annotation values are available as values of a dictionary keyed
 
536
by the parameters' names in the :attr:`__annotations__` attribute of the
 
537
function object.
 
538
 
 
539
.. index:: pair: lambda; expression
 
540
 
 
541
It is also possible to create anonymous functions (functions not bound to a
 
542
name), for immediate use in expressions.  This uses lambda expressions, described in
 
543
section :ref:`lambda`.  Note that the lambda expression is merely a shorthand for a
 
544
simplified function definition; a function defined in a ":keyword:`def`"
 
545
statement can be passed around or assigned to another name just like a function
 
546
defined by a lambda expression.  The ":keyword:`def`" form is actually more powerful
 
547
since it allows the execution of multiple statements and annotations.
 
548
 
 
549
**Programmer's note:** Functions are first-class objects.  A "``def``" statement
 
550
executed inside a function definition defines a local function that can be
 
551
returned or passed around.  Free variables used in the nested function can
 
552
access the local variables of the function containing the def.  See section
 
553
:ref:`naming` for details.
 
554
 
 
555
.. seealso::
 
556
 
 
557
   :pep:`3107` - Function Annotations
 
558
      The original specification for function annotations.
 
559
 
 
560
 
 
561
.. _class:
 
562
 
 
563
Class definitions
 
564
=================
 
565
 
 
566
.. index::
 
567
   object: class
 
568
   statement: class
 
569
   pair: class; definition
 
570
   pair: class; name
 
571
   pair: name; binding
 
572
   pair: execution; frame
 
573
   single: inheritance
 
574
   single: docstring
 
575
 
 
576
A class definition defines a class object (see section :ref:`types`):
 
577
 
 
578
.. productionlist::
 
579
   classdef: [`decorators`] "class" `classname` [`inheritance`] ":" `suite`
 
580
   inheritance: "(" [`parameter_list`] ")"
 
581
   classname: `identifier`
 
582
 
 
583
A class definition is an executable statement.  The inheritance list usually
 
584
gives a list of base classes (see :ref:`metaclasses` for more advanced uses), so
 
585
each item in the list should evaluate to a class object which allows
 
586
subclassing.  Classes without an inheritance list inherit, by default, from the
 
587
base class :class:`object`; hence, ::
 
588
 
 
589
   class Foo:
 
590
       pass
 
591
 
 
592
is equivalent to ::
 
593
 
 
594
   class Foo(object):
 
595
       pass
 
596
 
 
597
The class's suite is then executed in a new execution frame (see :ref:`naming`),
 
598
using a newly created local namespace and the original global namespace.
 
599
(Usually, the suite contains mostly function definitions.)  When the class's
 
600
suite finishes execution, its execution frame is discarded but its local
 
601
namespace is saved. [#]_ A class object is then created using the inheritance
 
602
list for the base classes and the saved local namespace for the attribute
 
603
dictionary.  The class name is bound to this class object in the original local
 
604
namespace.
 
605
 
 
606
Class creation can be customized heavily using :ref:`metaclasses <metaclasses>`.
 
607
 
 
608
Classes can also be decorated: just like when decorating functions, ::
 
609
 
 
610
   @f1(arg)
 
611
   @f2
 
612
   class Foo: pass
 
613
 
 
614
is equivalent to ::
 
615
 
 
616
   class Foo: pass
 
617
   Foo = f1(arg)(f2(Foo))
 
618
 
 
619
The evaluation rules for the decorator expressions are the same as for function
 
620
decorators.  The result must be a class object, which is then bound to the class
 
621
name.
 
622
 
 
623
**Programmer's note:** Variables defined in the class definition are class
 
624
attributes; they are shared by instances.  Instance attributes can be set in a
 
625
method with ``self.name = value``.  Both class and instance attributes are
 
626
accessible through the notation "``self.name``", and an instance attribute hides
 
627
a class attribute with the same name when accessed in this way.  Class
 
628
attributes can be used as defaults for instance attributes, but using mutable
 
629
values there can lead to unexpected results.  :ref:`Descriptors <descriptors>`
 
630
can be used to create instance variables with different implementation details.
 
631
 
 
632
 
 
633
.. seealso::
 
634
 
 
635
   :pep:`3115` - Metaclasses in Python 3
 
636
   :pep:`3129` - Class Decorators
 
637
 
 
638
 
 
639
.. rubric:: Footnotes
 
640
 
 
641
.. [#] The exception is propagated to the invocation stack unless
 
642
   there is a :keyword:`finally` clause which happens to raise another
 
643
   exception. That new exception causes the old one to be lost.
 
644
 
 
645
.. [#] Currently, control "flows off the end" except in the case of an exception
 
646
   or the execution of a :keyword:`return`, :keyword:`continue`, or
 
647
   :keyword:`break` statement.
 
648
 
 
649
.. [#] A string literal appearing as the first statement in the function body is
 
650
   transformed into the function's ``__doc__`` attribute and therefore the
 
651
   function's :term:`docstring`.
 
652
 
 
653
.. [#] A string literal appearing as the first statement in the class body is
 
654
   transformed into the namespace's ``__doc__`` item and therefore the class's
 
655
   :term:`docstring`.