blob: 6ec88f5340a751aee2d23b70d8f12229e2617066 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2.. _execmodel:
3
4***************
5Execution model
6***************
7
8.. index:: single: execution model
9
10
11.. _naming:
12
13Naming and binding
14==================
15
16.. index::
17 pair: code; block
18 single: namespace
19 single: scope
20
21.. index::
22 single: name
23 pair: binding; name
24
25:dfn:`Names` refer to objects. Names are introduced by name binding operations.
26Each occurrence of a name in the program text refers to the :dfn:`binding` of
27that name established in the innermost function block containing the use.
28
Georg Brandl96593ed2007-09-07 14:15:41 +000029.. index:: block
Georg Brandl116aa622007-08-15 14:28:22 +000030
31A :dfn:`block` is a piece of Python program text that is executed as a unit.
32The following are blocks: a module, a function body, and a class definition.
33Each command typed interactively is a block. A script file (a file given as
34standard input to the interpreter or specified on the interpreter command line
35the first argument) is a code block. A script command (a command specified on
Georg Brandl96593ed2007-09-07 14:15:41 +000036the interpreter command line with the '**-c**' option) is a code block. The
37string argument passed to the built-in functions :func:`eval` and :func:`exec`
38is a code block.
Georg Brandl116aa622007-08-15 14:28:22 +000039
40.. index:: pair: execution; frame
41
42A code block is executed in an :dfn:`execution frame`. A frame contains some
43administrative information (used for debugging) and determines where and how
44execution continues after the code block's execution has completed.
45
Georg Brandl96593ed2007-09-07 14:15:41 +000046.. index:: scope
Georg Brandl116aa622007-08-15 14:28:22 +000047
48A :dfn:`scope` defines the visibility of a name within a block. If a local
49variable is defined in a block, its scope includes that block. If the
50definition occurs in a function block, the scope extends to any blocks contained
51within the defining one, unless a contained block introduces a different binding
52for the name. The scope of names defined in a class block is limited to the
Christian Heimes04c420f2008-01-18 18:40:46 +000053class block; it does not extend to the code blocks of methods -- this includes
54generator expressions since they are implemented using a function scope. This
55means that the following will fail::
56
57 class A:
58 a = 42
59 b = list(a + i for i in range(10))
Georg Brandl116aa622007-08-15 14:28:22 +000060
61.. index:: single: environment
62
63When a name is used in a code block, it is resolved using the nearest enclosing
64scope. The set of all such scopes visible to a code block is called the block's
65:dfn:`environment`.
66
67.. index:: pair: free; variable
68
Georg Brandl96593ed2007-09-07 14:15:41 +000069If a name is bound in a block, it is a local variable of that block, unless
70declared as :keyword:`nonlocal`. If a name is bound at the module level, it is
71a global variable. (The variables of the module code block are local and
72global.) If a variable is used in a code block but not defined there, it is a
73:dfn:`free variable`.
Georg Brandl116aa622007-08-15 14:28:22 +000074
75.. index::
76 single: NameError (built-in exception)
77 single: UnboundLocalError
78
79When a name is not found at all, a :exc:`NameError` exception is raised. If the
80name refers to a local variable that has not been bound, a
81:exc:`UnboundLocalError` exception is raised. :exc:`UnboundLocalError` is a
82subclass of :exc:`NameError`.
83
84.. index:: statement: from
85
86The following constructs bind names: formal parameters to functions,
87:keyword:`import` statements, class and function definitions (these bind the
88class or function name in the defining block), and targets that are identifiers
89if occurring in an assignment, :keyword:`for` loop header, or in the second
90position of an :keyword:`except` clause header. The :keyword:`import` statement
91of the form "``from ...import *``" binds all names defined in the imported
92module, except those beginning with an underscore. This form may only be used
93at the module level.
94
95A target occurring in a :keyword:`del` statement is also considered bound for
96this purpose (though the actual semantics are to unbind the name). It is
97illegal to unbind a name that is referenced by an enclosing scope; the compiler
98will report a :exc:`SyntaxError`.
99
100Each assignment or import statement occurs within a block defined by a class or
101function definition or at the module level (the top-level code block).
102
103If a name binding operation occurs anywhere within a code block, all uses of the
104name within the block are treated as references to the current block. This can
Georg Brandl96593ed2007-09-07 14:15:41 +0000105lead to errors when a name is used within a block before it is bound. This rule
Georg Brandl116aa622007-08-15 14:28:22 +0000106is subtle. Python lacks declarations and allows name binding operations to
107occur anywhere within a code block. The local variables of a code block can be
108determined by scanning the entire text of the block for name binding operations.
109
Georg Brandl96593ed2007-09-07 14:15:41 +0000110If the :keyword:`global` statement occurs within a block, all uses of the name
111specified in the statement refer to the binding of that name in the top-level
112namespace. Names are resolved in the top-level namespace by searching the
113global namespace, i.e. the namespace of the module containing the code block,
Georg Brandl1a3284e2007-12-02 09:40:06 +0000114and the builtin namespace, the namespace of the module :mod:`builtins`. The
Georg Brandl96593ed2007-09-07 14:15:41 +0000115global namespace is searched first. If the name is not found there, the builtin
116namespace is searched. The global statement must precede all uses of the name.
117
118.. XXX document "nonlocal" semantics here
Georg Brandl116aa622007-08-15 14:28:22 +0000119
120.. index:: pair: restricted; execution
121
122The built-in namespace associated with the execution of a code block is actually
123found by looking up the name ``__builtins__`` in its global namespace; this
124should be a dictionary or a module (in the latter case the module's dictionary
125is used). By default, when in the :mod:`__main__` module, ``__builtins__`` is
Georg Brandl1a3284e2007-12-02 09:40:06 +0000126the built-in module :mod:`builtins`; when in any other module,
127``__builtins__`` is an alias for the dictionary of the :mod:`builtins` module
Georg Brandl116aa622007-08-15 14:28:22 +0000128itself. ``__builtins__`` can be set to a user-created dictionary to create a
129weak form of restricted execution.
130
131.. note::
132
133 Users should not touch ``__builtins__``; it is strictly an implementation
134 detail. Users wanting to override values in the built-in namespace should
Georg Brandl1a3284e2007-12-02 09:40:06 +0000135 :keyword:`import` the :mod:`builtins` module and modify its
Georg Brandl116aa622007-08-15 14:28:22 +0000136 attributes appropriately.
137
138.. index:: module: __main__
139
140The namespace for a module is automatically created the first time a module is
141imported. The main module for a script is always called :mod:`__main__`.
142
143The global statement has the same scope as a name binding operation in the same
144block. If the nearest enclosing scope for a free variable contains a global
145statement, the free variable is treated as a global.
146
147A class definition is an executable statement that may use and define names.
Georg Brandl96593ed2007-09-07 14:15:41 +0000148These references follow the normal rules for name resolution. The namespace of
Georg Brandl116aa622007-08-15 14:28:22 +0000149the class definition becomes the attribute dictionary of the class. Names
150defined at the class scope are not visible in methods.
151
152
153.. _dynamic-features:
154
155Interaction with dynamic features
156---------------------------------
157
158There are several cases where Python statements are illegal when used in
159conjunction with nested scopes that contain free variables.
160
161If a variable is referenced in an enclosing scope, it is illegal to delete the
162name. An error will be reported at compile time.
163
164If the wild card form of import --- ``import *`` --- is used in a function and
165the function contains or is a nested block with free variables, the compiler
166will raise a :exc:`SyntaxError`.
167
Georg Brandl96593ed2007-09-07 14:15:41 +0000168.. XXX from * also invalid with relative imports (at least currently)
169
170The :func:`eval` and :func:`exec` functions do not have access to the full
171environment for resolving names. Names may be resolved in the local and global
172namespaces of the caller. Free variables are not resolved in the nearest
173enclosing namespace, but in the global namespace. [#]_ The :func:`exec` and
174:func:`eval` functions have optional arguments to override the global and local
175namespace. If only one namespace is specified, it is used for both.
Georg Brandl116aa622007-08-15 14:28:22 +0000176
177
178.. _exceptions:
179
180Exceptions
181==========
182
183.. index:: single: exception
184
185.. index::
186 single: raise an exception
187 single: handle an exception
188 single: exception handler
189 single: errors
190 single: error handling
191
192Exceptions are a means of breaking out of the normal flow of control of a code
193block in order to handle errors or other exceptional conditions. An exception
194is *raised* at the point where the error is detected; it may be *handled* by the
195surrounding code block or by any code block that directly or indirectly invoked
196the code block where the error occurred.
197
198The Python interpreter raises an exception when it detects a run-time error
199(such as division by zero). A Python program can also explicitly raise an
200exception with the :keyword:`raise` statement. Exception handlers are specified
Alexandre Vassalottieca20b62008-05-16 02:54:33 +0000201with the :keyword:`try` ... :keyword:`except` statement. The :keyword:`finally`
202clause of such a statement can be used to specify cleanup code which does not
203handle the exception, but is executed whether an exception occurred or not in
204the preceding code.
Georg Brandl116aa622007-08-15 14:28:22 +0000205
206.. index:: single: termination model
207
208Python uses the "termination" model of error handling: an exception handler can
209find out what happened and continue execution at an outer level, but it cannot
210repair the cause of the error and retry the failing operation (except by
211re-entering the offending piece of code from the top).
212
213.. index:: single: SystemExit (built-in exception)
214
215When an exception is not handled at all, the interpreter terminates execution of
216the program, or returns to its interactive main loop. In either case, it prints
Georg Brandl96593ed2007-09-07 14:15:41 +0000217a stack backtrace, except when the exception is :exc:`SystemExit`.
Georg Brandl116aa622007-08-15 14:28:22 +0000218
219Exceptions are identified by class instances. The :keyword:`except` clause is
220selected depending on the class of the instance: it must reference the class of
221the instance or a base class thereof. The instance can be received by the
222handler and can carry additional information about the exceptional condition.
223
Georg Brandl116aa622007-08-15 14:28:22 +0000224.. warning::
225
Georg Brandl96593ed2007-09-07 14:15:41 +0000226 Exception messages are not part of the Python API. Their contents may change
227 from one version of Python to the next without warning and should not be
Georg Brandl116aa622007-08-15 14:28:22 +0000228 relied on by code which will run under multiple versions of the interpreter.
229
230See also the description of the :keyword:`try` statement in section :ref:`try`
231and :keyword:`raise` statement in section :ref:`raise`.
232
Georg Brandl1aea30a2008-07-19 15:51:07 +0000233
Georg Brandl116aa622007-08-15 14:28:22 +0000234.. rubric:: Footnotes
235
Georg Brandl96593ed2007-09-07 14:15:41 +0000236.. [#] This limitation occurs because the code that is executed by these operations
237 is not available at the time the module is compiled.
Georg Brandl116aa622007-08-15 14:28:22 +0000238