blob: 7176f200f4eb7e02d11121a564083171a89a5939 [file] [log] [blame]
Fred Drake431f0ce1999-05-13 18:38:11 +00001\chapter{Execution model \label{execmodel}}
Fred Drakef6669171998-05-06 19:52:49 +00002\index{execution model}
3
Fred Drake2829f1c2001-06-23 05:27:20 +00004
Jeremy Hyltone7d57732002-04-01 20:38:01 +00005\section{Naming and binding \label{naming}}
6\indexii{code}{block}
Guido van Rossumb18a93b1998-07-23 19:36:00 +00007\index{namespace}
Jeremy Hyltone7d57732002-04-01 20:38:01 +00008\index{scope}
Fred Drakef6669171998-05-06 19:52:49 +00009
Jeremy Hyltone7d57732002-04-01 20:38:01 +000010\dfn{Names}\index{name} refer to objects. Names are introduced by
11name binding operations. Each occurrence of a name in the program
12text refers to the \dfn{binding}\indexii{binding}{name} of that name
13established in the innermost function block containing the use.
Fred Drakef6669171998-05-06 19:52:49 +000014
Jeremy Hyltone7d57732002-04-01 20:38:01 +000015A \dfn{block}\index{block} is a piece of Python program text that is
16executed as a unit. The following are blocks: a module, a function
17body, and a class definition. Each command typed interactively is a
18block. A script file (a file given as standard input to the
19interpreter or specified on the interpreter command line the first
20argument) is a code block. A script command (a command specified on
21the interpreter command line with the `\strong{-c}' option) is a code
22block. The file read by the built-in function \function{execfile()}
23is a code block. The string argument passed to the built-in function
24\function{eval()} and to the \keyword{exec} statement is a code block.
25The expression read and evaluated by the built-in function
26\function{input()} is a code block.
Fred Drakef6669171998-05-06 19:52:49 +000027
Jeremy Hyltone6048752002-04-01 21:33:55 +000028A code block is executed in an \dfn{execution
29frame}\indexii{execution}{frame}. A frame contains some
30administrative information (used for debugging) and determines where
31and how execution continues after the code block's execution has
32completed.
33
Jeremy Hyltone7d57732002-04-01 20:38:01 +000034A \dfn{scope}\index{scope} defines the visibility of a name within a
35block. If a local variable is defined in a block, it's scope includes
36that block. If the definition occurs in a function block, the scope
37extends to any blocks contained within the defining one, unless a
38contained block introduces a different binding for the name. The
39scope of names defined in a class block is limited to the class block;
40it does not extend to the code blocks of methods.
Fred Drakef6669171998-05-06 19:52:49 +000041
Jeremy Hyltone7d57732002-04-01 20:38:01 +000042When a name is used in a code block, it is resolved using the nearest
43enclosing scope. The set of all such scopes visible to a code block
44is called the block's \dfn{environment}\index{environment}.
Fred Drakef6669171998-05-06 19:52:49 +000045
Jeremy Hyltone7d57732002-04-01 20:38:01 +000046If a name is bound in a block, it is a local variable of that block.
47If a name is bound at the module level, it is a global variable. (The
48variables of the module code block are local and global.) If a
49variable is used in a code block but not defined there, it is a
50\dfn{free variable}\indexii{free}{variable}.
Fred Drakef6669171998-05-06 19:52:49 +000051
Jeremy Hyltone7d57732002-04-01 20:38:01 +000052When a name is not found at all, a
53\exception{NameError}\withsubitem{(built-in
54exception)}{\ttindex{NameError}} exception is raised. If the name
55refers to a local variable that has not been bound, a
56\exception{UnboundLocalError}\ttindex{UnboundLocalError} exception is
57raised. \exception{UnboundLocalError} is a subclass of
58\exception{NameError}.
59
60The following constructs bind names: formal parameters to functions,
Guido van Rossumb18a93b1998-07-23 19:36:00 +000061\keyword{import} statements, class and function definitions (these
62bind the class or function name in the defining block), and targets
63that are identifiers if occurring in an assignment, \keyword{for} loop
64header, or in the second position of an \keyword{except} clause
Jeremy Hyltone7d57732002-04-01 20:38:01 +000065header. The \keyword{import} statement of the form ``\samp{from
66\ldots import *}''\stindex{from} binds all names defined in the
67imported module, except those beginning with an underscore. This form
68may only be used at the module level.
Fred Drakef6669171998-05-06 19:52:49 +000069
70A target occurring in a \keyword{del} statement is also considered bound
Jeremy Hyltone7d57732002-04-01 20:38:01 +000071for this purpose (though the actual semantics are to unbind the
72name). It is illegal to unbind a name that is referenced by an
73enclosing scope; the compiler will report a \exception{SyntaxError}.
Fred Drakef6669171998-05-06 19:52:49 +000074
Jeremy Hyltone7d57732002-04-01 20:38:01 +000075Each assignment or import statement occurs within a block defined by a
76class or function definition or at the module level (the top-level
77code block).
Fred Drakef6669171998-05-06 19:52:49 +000078
Jeremy Hyltone7d57732002-04-01 20:38:01 +000079If a name binding operation occurs anywhere within a code block, all
80uses of the name within the block are treated as references to the
81current block. This can lead to errors when a name is used within a
82block before it is bound.
Fred Drakef6669171998-05-06 19:52:49 +000083
Jeremy Hyltone7d57732002-04-01 20:38:01 +000084The previous rule is a subtle. Python lacks declarations and allows
85name binding operations to occur anywhere within a code block. The
86local variables of a code block can be determined by scanning the
87entire text of the block for name binding operations.
Jeremy Hyltone7024812001-03-23 14:05:16 +000088
Jeremy Hyltone7d57732002-04-01 20:38:01 +000089If the global statement occurs within a block, all uses of the name
90specified in the statement refer to the binding of that name in the
91top-level namespace. Names are resolved in the top-level namespace by
92searching the global namespace, i.e. the namespace of the module
93containing the code block, and the builtin namespace, the namespace of
94the module \module{__builtin__}. The global namespace is searched
95first. If the name is not found there, the builtin namespace is
96searched. The global statement must precede all uses of the name.
Jeremy Hyltone7024812001-03-23 14:05:16 +000097
Jeremy Hyltone7d57732002-04-01 20:38:01 +000098The built-in namespace associated with the execution of a code block
99is actually found by looking up the name \code{__builtins__} in its
100global namespace; this should be a dictionary or a module (in the
101latter case the module's dictionary is used). Normally, the
102\code{__builtins__} namespace is the dictionary of the built-in module
103\module{__builtin__} (note: no `s'). If it isn't, restricted
104execution\indexii{restricted}{execution} mode is in effect.
Jeremy Hyltone7024812001-03-23 14:05:16 +0000105
Jeremy Hyltone7d57732002-04-01 20:38:01 +0000106The namespace for a module is automatically created the first time a
107module is imported. The main module for a script is always called
108\module{__main__}\refbimodindex{__main__}.
Jeremy Hyltone7024812001-03-23 14:05:16 +0000109
Jeremy Hyltone7d57732002-04-01 20:38:01 +0000110The global statement has the same scope as a name binding operation
111in the same block. If the nearest enclosing scope for a free variable
112contains a global statement, the free variable is treated as a global.
Jeremy Hyltone7024812001-03-23 14:05:16 +0000113
Jeremy Hyltone7d57732002-04-01 20:38:01 +0000114A class definition is an executable statement that may use and define
115names. These references follow the normal rules for name resolution.
116The namespace of the class definition becomes the attribute dictionary
117of the class. Names defined at the class scope are not visible in
118methods.
Jeremy Hyltone7024812001-03-23 14:05:16 +0000119
Jeremy Hyltone7d57732002-04-01 20:38:01 +0000120\subsection{Interaction with dynamic features \label{dynamic-features}}
121
122There are several cases where Python statements are illegal when
123used in conjunction with nested scopes that contain free
124variables.
125
126If a variable is referenced in an enclosing scope, it is illegal
127to delete the name. An error will be reported at compile time.
128
129If the wild card form of import --- \samp{import *} --- is used in a
130function and the function contains or is a nested block with free
131variables, the compiler will raise a SyntaxError.
132
133If \keyword{exec} is used in a function and the function contains or
134is a nested block with free variables, the compiler will raise a
135\exception{SyntaxError} unless the exec explicitly specifies the local
136namespace for the \keyword{exec}. (In other words, \samp{exec obj}
137would be illegal, but \samp{exec obj in ns} would be legal.)
138
139The \function{eval()}, \function{execfile()}, and \function{input()}
140functions and the \keyword{exec} statement do not have access to the
141full environment for resolving names. Names may be resolved in the
142local and global namespaces of the caller. Free variables are not
143resolved in the nearest enclosing namespace, but in the global
144namespace.\footnote{This limitation occurs because the code that is
145 executed by these operations is not available at the time the
146 module is compiled.}
147The \keyword{exec} statement and the \function{eval()} and
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000148\function{execfile()} functions have optional arguments to override
149the global and local namespace. If only one namespace is specified,
150it is used for both.
Fred Drakef6669171998-05-06 19:52:49 +0000151
Fred Drake431f0ce1999-05-13 18:38:11 +0000152\section{Exceptions \label{exceptions}}
153\index{exception}
Fred Drakef6669171998-05-06 19:52:49 +0000154
155Exceptions are a means of breaking out of the normal flow of control
156of a code block in order to handle errors or other exceptional
Fred Drake431f0ce1999-05-13 18:38:11 +0000157conditions. An exception is
158\emph{raised}\index{raise an exception} at the point where the error
159is detected; it may be \emph{handled}\index{handle an exception} by
160the surrounding code block or by any code block that directly or
161indirectly invoked the code block where the error occurred.
Fred Drakef6669171998-05-06 19:52:49 +0000162\index{exception handler}
163\index{errors}
164\index{error handling}
165
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000166The Python interpreter raises an exception when it detects a run-time
Fred Drakef6669171998-05-06 19:52:49 +0000167error (such as division by zero). A Python program can also
168explicitly raise an exception with the \keyword{raise} statement.
169Exception handlers are specified with the \keyword{try} ... \keyword{except}
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000170statement. The \keyword{try} ... \keyword{finally} statement
171specifies cleanup code which does not handle the exception, but is
172executed whether an exception occurred or not in the preceding code.
Fred Drakef6669171998-05-06 19:52:49 +0000173
Fred Drakee15956b2000-04-03 04:51:13 +0000174Python uses the ``termination'' \index{termination model}model of
175error handling: an exception handler can find out what happened and
176continue execution at an outer level, but it cannot repair the cause
177of the error and retry the failing operation (except by re-entering
178the offending piece of code from the top).
Fred Drakef6669171998-05-06 19:52:49 +0000179
180When an exception is not handled at all, the interpreter terminates
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000181execution of the program, or returns to its interactive main loop. In
182either case, it prints a stack backtrace, except when the exception is
Fred Drake431f0ce1999-05-13 18:38:11 +0000183\exception{SystemExit}\withsubitem{(built-in
184exception)}{\ttindex{SystemExit}}.
Fred Drakef6669171998-05-06 19:52:49 +0000185
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000186Exceptions are identified by string objects or class instances.
187Selection of a matching except clause is based on object identity
188(i.e., two different string objects with the same value represent
189different exceptions!) For string exceptions, the \keyword{except}
190clause must reference the same string object. For class exceptions,
191the \keyword{except} clause must reference the same class or a base
192class of it.
Fred Drakef6669171998-05-06 19:52:49 +0000193
194When an exception is raised, an object (maybe \code{None}) is passed
Guido van Rossumb18a93b1998-07-23 19:36:00 +0000195as the exception's ``parameter'' or ``value''; this object does not
196affect the selection of an exception handler, but is passed to the
197selected exception handler as additional information. For class
198exceptions, this object must be an instance of the exception class
199being raised.
Fred Drakef6669171998-05-06 19:52:49 +0000200
Fred Drakee15956b2000-04-03 04:51:13 +0000201See also the description of the \keyword{try} statement in section
202\ref{try} and \keyword{raise} statement in section \ref{raise}.