blob: 82e37a21fab541939c843e0fa5c6807eab55dd22 [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
Benjamin Petersone9deddb2009-01-31 03:57:19 +000054comprehensions and generator expressions since they are implemented using a
55function scope. This means that the following will fail::
Christian Heimes04c420f2008-01-18 18:40:46 +000056
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
Georg Brandl7f157862009-03-15 21:57:20 +000089if occurring in an assignment, :keyword:`for` loop header, or after
Georg Brandl682d7e02010-10-06 10:26:05 +000090:keyword:`as` in a :keyword:`with` statement or :keyword:`except` clause.
Georg Brandl7f157862009-03-15 21:57:20 +000091The :keyword:`import` statement
92of the form ``from ... import *`` binds all names defined in the imported
Georg Brandl116aa622007-08-15 14:28:22 +000093module, except those beginning with an underscore. This form may only be used
94at the module level.
95
96A target occurring in a :keyword:`del` statement is also considered bound for
Benjamin Peterson849272b2011-02-26 21:34:51 +000097this purpose (though the actual semantics are to unbind the name).
Georg Brandl116aa622007-08-15 14:28:22 +000098
99Each assignment or import statement occurs within a block defined by a class or
100function definition or at the module level (the top-level code block).
101
102If a name binding operation occurs anywhere within a code block, all uses of the
103name within the block are treated as references to the current block. This can
Georg Brandl96593ed2007-09-07 14:15:41 +0000104lead to errors when a name is used within a block before it is bound. This rule
Georg Brandl116aa622007-08-15 14:28:22 +0000105is subtle. Python lacks declarations and allows name binding operations to
106occur anywhere within a code block. The local variables of a code block can be
107determined by scanning the entire text of the block for name binding operations.
108
Georg Brandl96593ed2007-09-07 14:15:41 +0000109If the :keyword:`global` statement occurs within a block, all uses of the name
110specified in the statement refer to the binding of that name in the top-level
111namespace. Names are resolved in the top-level namespace by searching the
112global namespace, i.e. the namespace of the module containing the code block,
Georg Brandl22b34312009-07-26 14:54:51 +0000113and the builtins namespace, the namespace of the module :mod:`builtins`. The
114global namespace is searched first. If the name is not found there, the builtins
Georg Brandl96593ed2007-09-07 14:15:41 +0000115namespace is searched. The global statement must precede all uses of the name.
116
117.. XXX document "nonlocal" semantics here
Georg Brandl116aa622007-08-15 14:28:22 +0000118
119.. index:: pair: restricted; execution
120
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000121The builtins namespace associated with the execution of a code block is actually
Georg Brandl116aa622007-08-15 14:28:22 +0000122found by looking up the name ``__builtins__`` in its global namespace; this
123should be a dictionary or a module (in the latter case the module's dictionary
124is used). By default, when in the :mod:`__main__` module, ``__builtins__`` is
Georg Brandl1a3284e2007-12-02 09:40:06 +0000125the built-in module :mod:`builtins`; when in any other module,
126``__builtins__`` is an alias for the dictionary of the :mod:`builtins` module
Georg Brandl116aa622007-08-15 14:28:22 +0000127itself. ``__builtins__`` can be set to a user-created dictionary to create a
128weak form of restricted execution.
129
Georg Brandl495f7b52009-10-27 15:28:25 +0000130.. impl-detail::
Georg Brandl116aa622007-08-15 14:28:22 +0000131
132 Users should not touch ``__builtins__``; it is strictly an implementation
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000133 detail. Users wanting to override values in the builtins namespace should
Georg Brandl1a3284e2007-12-02 09:40:06 +0000134 :keyword:`import` the :mod:`builtins` module and modify its
Georg Brandl116aa622007-08-15 14:28:22 +0000135 attributes appropriately.
136
137.. index:: module: __main__
138
139The namespace for a module is automatically created the first time a module is
140imported. The main module for a script is always called :mod:`__main__`.
141
Georg Brandlb30f3302011-01-06 09:23:56 +0000142The :keyword:`global` statement has the same scope as a name binding operation
143in the same block. If the nearest enclosing scope for a free variable contains
144a global statement, the free variable is treated as a global.
Georg Brandl116aa622007-08-15 14:28:22 +0000145
146A class definition is an executable statement that may use and define names.
Georg Brandl96593ed2007-09-07 14:15:41 +0000147These references follow the normal rules for name resolution. The namespace of
Georg Brandl116aa622007-08-15 14:28:22 +0000148the class definition becomes the attribute dictionary of the class. Names
149defined at the class scope are not visible in methods.
150
151
152.. _dynamic-features:
153
154Interaction with dynamic features
155---------------------------------
156
157There are several cases where Python statements are illegal when used in
158conjunction with nested scopes that contain free variables.
159
160If a variable is referenced in an enclosing scope, it is illegal to delete the
161name. An error will be reported at compile time.
162
163If the wild card form of import --- ``import *`` --- is used in a function and
164the function contains or is a nested block with free variables, the compiler
165will raise a :exc:`SyntaxError`.
166
Georg Brandl96593ed2007-09-07 14:15:41 +0000167.. XXX from * also invalid with relative imports (at least currently)
168
169The :func:`eval` and :func:`exec` functions do not have access to the full
170environment for resolving names. Names may be resolved in the local and global
171namespaces of the caller. Free variables are not resolved in the nearest
172enclosing namespace, but in the global namespace. [#]_ The :func:`exec` and
173:func:`eval` functions have optional arguments to override the global and local
174namespace. If only one namespace is specified, it is used for both.
Georg Brandl116aa622007-08-15 14:28:22 +0000175
176
177.. _exceptions:
178
179Exceptions
180==========
181
182.. index:: single: exception
183
184.. index::
185 single: raise an exception
186 single: handle an exception
187 single: exception handler
188 single: errors
189 single: error handling
190
191Exceptions are a means of breaking out of the normal flow of control of a code
192block in order to handle errors or other exceptional conditions. An exception
193is *raised* at the point where the error is detected; it may be *handled* by the
194surrounding code block or by any code block that directly or indirectly invoked
195the code block where the error occurred.
196
197The Python interpreter raises an exception when it detects a run-time error
198(such as division by zero). A Python program can also explicitly raise an
199exception with the :keyword:`raise` statement. Exception handlers are specified
Alexandre Vassalottieca20b62008-05-16 02:54:33 +0000200with the :keyword:`try` ... :keyword:`except` statement. The :keyword:`finally`
201clause of such a statement can be used to specify cleanup code which does not
202handle the exception, but is executed whether an exception occurred or not in
203the preceding code.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205.. index:: single: termination model
206
207Python uses the "termination" model of error handling: an exception handler can
208find out what happened and continue execution at an outer level, but it cannot
209repair the cause of the error and retry the failing operation (except by
210re-entering the offending piece of code from the top).
211
212.. index:: single: SystemExit (built-in exception)
213
214When an exception is not handled at all, the interpreter terminates execution of
215the program, or returns to its interactive main loop. In either case, it prints
Georg Brandl96593ed2007-09-07 14:15:41 +0000216a stack backtrace, except when the exception is :exc:`SystemExit`.
Georg Brandl116aa622007-08-15 14:28:22 +0000217
218Exceptions are identified by class instances. The :keyword:`except` clause is
219selected depending on the class of the instance: it must reference the class of
220the instance or a base class thereof. The instance can be received by the
221handler and can carry additional information about the exceptional condition.
222
Georg Brandle720c0a2009-04-27 16:20:50 +0000223.. note::
Georg Brandl116aa622007-08-15 14:28:22 +0000224
Georg Brandl96593ed2007-09-07 14:15:41 +0000225 Exception messages are not part of the Python API. Their contents may change
226 from one version of Python to the next without warning and should not be
Georg Brandl116aa622007-08-15 14:28:22 +0000227 relied on by code which will run under multiple versions of the interpreter.
228
229See also the description of the :keyword:`try` statement in section :ref:`try`
230and :keyword:`raise` statement in section :ref:`raise`.
231
Georg Brandl1aea30a2008-07-19 15:51:07 +0000232
Georg Brandl116aa622007-08-15 14:28:22 +0000233.. rubric:: Footnotes
234
Georg Brandl96593ed2007-09-07 14:15:41 +0000235.. [#] This limitation occurs because the code that is executed by these operations
236 is not available at the time the module is compiled.
Georg Brandl116aa622007-08-15 14:28:22 +0000237