Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
a1cce714
Commit
a1cce714
authored
Jul 24, 1998
by
Fred Drake
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Converted some {tabular}s to use {tablei*} environments.
parent
30e52653
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
69 deletions
+64
-69
Doc/ref/ref2.tex
Doc/ref/ref2.tex
+22
-34
Doc/ref/ref4.tex
Doc/ref/ref4.tex
+42
-35
No files found.
Doc/ref/ref2.tex
View file @
a1cce714
\chapter
{
Lexical analysis
}
\chapter
{
Lexical analysis
\label
{
lexical
}
}
A Python program is read by a
\emph
{
parser
}
. Input to the parser is a
stream of
\emph
{
tokens
}
, generated by the
\emph
{
lexical analyzer
}
. This
...
...
@@ -33,7 +33,7 @@ set.
A Python program is divided into a number of
\emph
{
logical lines
}
.
\index
{
line structure
}
\subsection
{
Logical
L
ines
}
\subsection
{
Logical
l
ines
}
The end of
a logical line is represented by the token NEWLINE. Statements cannot
...
...
@@ -259,17 +259,11 @@ def finally in print
Certain classes of identifiers (besides keywords) have special
meanings. These are:
\begin{center}
\begin{tabular}
{
|l|l|
}
\hline
Form
&
Meaning
\\
\hline
\code
{_
*
}
&
Not imported by
\code
{
from
\var
{
module
}
import *
}
\\
\code
{__
*
__}
&
System-defined name
\\
\code
{__
*
}
&
Class-private name mangling
\\
\hline
\end{tabular}
\end{center}
\begin{tableii}
{
l|l
}{
code
}{
Form
}{
Meaning
}
\lineii
{_
*
}{
Not imported by
\samp
{
from
\var
{
module
}
import *
}}
\lineii
{__
*
__}{
System-defined name
}
\lineii
{__
*
}{
Class-private name mangling
}
\end{tableii}
(XXX need section references here.)
...
...
@@ -322,27 +316,21 @@ to those used by Standard \C{}. The recognized escape sequences are:
\index
{
Standard C
}
\index
{
C
}
\begin{center}
\begin{tabular}
{
|l|l|
}
\hline
Escape Sequence
&
Meaning
\\
\hline
\code
{
\e
}
\emph
{
newline
}
&
Ignored
\\
\code
{
\e\e
}
&
Backslash (
\code
{
\e
}
)
\\
\code
{
\e
'
}
&
Single quote (
\code
{
'
}
)
\\
\code
{
\e
"
}
&
Double quote (
\code
{
"
}
)
\\
\code
{
\e
a
}
&
\ASCII
{}
Bell (BEL)
\\
\code
{
\e
b
}
&
\ASCII
{}
Backspace (BS)
\\
\code
{
\e
f
}
&
\ASCII
{}
Formfeed (FF)
\\
\code
{
\e
n
}
&
\ASCII
{}
Linefeed (LF)
\\
\code
{
\e
r
}
&
\ASCII
{}
Carriage Return (CR)
\\
\code
{
\e
t
}
&
\ASCII
{}
Horizontal Tab (TAB)
\\
\code
{
\e
v
}
&
\ASCII
{}
Vertical Tab (VT)
\\
\code
{
\e
}
\emph
{
ooo
}
&
\ASCII
{}
character with octal value
\emph
{
ooo
}
\\
\code
{
\e
x
}
\emph
{
hh...
}
&
\ASCII
{}
character with hex value
\emph
{
hh...
}
\\
\hline
\end{tabular}
\end{center}
\begin{tableii}
{
l|l
}{
code
}{
Escape Sequence
}{
Meaning
}
\lineii
{
\e\var
{
newline
}}
{
Ignored
}
\lineii
{
\e\e
}
{
Backslash (
\code
{
\e
}
)
}
\lineii
{
\e
'
}
{
Single quote (
\code
{
'
}
)
}
\lineii
{
\e
"
}
{
Double quote (
\code
{
"
}
)
}
\lineii
{
\e
a
}
{
\ASCII
{}
Bell (BEL)
}
\lineii
{
\e
b
}
{
\ASCII
{}
Backspace (BS)
}
\lineii
{
\e
f
}
{
\ASCII
{}
Formfeed (FF)
}
\lineii
{
\e
n
}
{
\ASCII
{}
Linefeed (LF)
}
\lineii
{
\e
r
}
{
\ASCII
{}
Carriage Return (CR)
}
\lineii
{
\e
t
}
{
\ASCII
{}
Horizontal Tab (TAB)
}
\lineii
{
\e
v
}
{
\ASCII
{}
Vertical Tab (VT)
}
\lineii
{
\e\var
{
ooo
}}
{
\ASCII
{}
character with octal value
\emph
{
ooo
}}
\lineii
{
\e
x
\var
{
hh...
}}
{
\ASCII
{}
character with hex value
\emph
{
hh...
}}
\end{tableii}
\index
{
ASCII@
\ASCII
{}}
In strict compatibility with Standard
\C
, up to three octal digits are
...
...
Doc/ref/ref4.tex
View file @
a1cce714
\chapter
{
Execution model
}
\chapter
{
Execution model
\label
{
execmodel
}
}
\index
{
execution model
}
\section
{
Code blocks, execution frames, and namespaces
}
\label
{
execframes
}
...
...
@@ -6,7 +6,7 @@
\indexii
{
execution
}{
frame
}
\index
{
namespace
}
A
{
\em
code block
}
is a piece of Python program text that can be
A
\dfn
{
code block
}
is a piece of Python program text that can be
executed as a unit, such as a module, a class definition or a function
body. Some code blocks (like modules) are normally executed only once, others
(like function bodies) may be executed many times. Code blocks may
...
...
@@ -29,7 +29,7 @@ passed to the built-in function \function{eval()} and to the
read and evaluated by the built-in function
\function
{
input()
}
is a
code block.
A code block is executed in an execution frame. An
{
\em
execution
A code block is executed in an execution frame. An
\dfn
{
execution
frame
}
contains some administrative information (used for debugging),
determines where and how execution continues after the code block's
execution has completed, and (perhaps most importantly) defines two
...
...
@@ -37,11 +37,11 @@ namespaces, the local and the global namespace, that affect
execution of the code block.
\indexii
{
execution
}{
frame
}
A
{
\em
namespace
}
is a mapping from names (identifiers) to objects.
A
\dfn
{
namespace
}
is a mapping from names (identifiers) to objects.
A particular namespace may be referenced by more than one execution
frame, and from other places as well. Adding a name to a namespace
is called
{
\em
binding
}
a name (to an object); changing the mapping of
a name is called
{
\em
rebinding
}
; removing a name is
{
\em
unbinding
}
.
is called
\dfn
{
binding
}
a name (to an object); changing the mapping of
a name is called
\dfn
{
rebinding
}
; removing a name is
\dfn
{
unbinding
}
.
Namespaces are functionally equivalent to dictionaries (and often
implemented as dictionaries).
\index
{
namespace
}
...
...
@@ -49,8 +49,8 @@ implemented as dictionaries).
\indexii
{
rebinding
}{
name
}
\indexii
{
unbinding
}{
name
}
The
{
\em
local namespace
}
of an execution frame determines the default
place where names are defined and searched. The
{
\em
global
The
\dfn
{
local namespace
}
of an execution frame determines the default
place where names are defined and searched. The
\dfn
{
global
namespace
}
determines the place where names listed in
\keyword
{
global
}
statements are defined and searched, and where names that are not
bound anywhere in the current code block are searched.
...
...
@@ -105,36 +105,43 @@ imported (i.e., when it is loaded). Note that in almost all cases,
the global namespace is the namespace of the containing module ---
scopes in Python do not nest!
\begin{center}
\begin{tabular}
{
|l|l|l|l|
}
\hline
Code block type
&
Global namespace
&
Local namespace
&
Notes
\\
\hline
Module
&
n.s. for this module
&
same as global
&
\\
Script (file or command)
&
n.s. for
\module
{__
main
__}
&
same as global
&
(1)
\\
Interactive command
&
n.s. for
\module
{__
main
__}
&
same as global
&
\\
Class definition
&
global n.s. of containing block
&
new n.s.
&
\\
Function body
&
global n.s. of containing block
&
new n.s.
&
(2)
\\
String passed to
\keyword
{
exec
}
statement
&
global n.s. of containing block
&
local n.s. of containing block
&
(2), (3)
\\
String passed to
\function
{
eval()
}
&
global n.s. of caller
&
local n.s. of caller
&
(2), (3)
\\
File read by
\function
{
execfile()
}
&
global n.s. of caller
&
local n.s. of caller
&
(2), (3)
\\
Expression read by
\function
{
input()
}
&
global n.s. of caller
&
local n.s. of caller
&
\\
\hline
\end{tabular}
\end{center}
\begin{tableiv}
{
l|l|l|l
}{
textrm
}
%
{
Code block type
}{
Global namespace
}{
Local namespace
}{
Notes
}
\lineiv
{
Module
}
%
{
n.s. for this module
}
%
{
same as global
}{}
\lineiv
{
Script (file or command)
}
%
{
n.s. for
\module
{__
main
__}}
%
{
same as global
}{
(1)
}
\lineiv
{
Interactive command
}
%
{
n.s. for
\module
{__
main
__}}
%
{
same as global
}{}
\lineiv
{
Class definition
}
%
{
global n.s. of containing block
}
%
{
new n.s.
}{}
\lineiv
{
Function body
}
%
{
global n.s. of containing block
}
%
{
new n.s.
}{
(2)
}
\lineiv
{
String passed to
\keyword
{
exec
}
statement
}
%
{
global n.s. of containing block
}
%
{
local n.s. of containing block
}{
(2), (3)
}
\lineiv
{
String passed to
\function
{
eval()
}}
%
{
global n.s. of caller
}
%
{
local n.s. of caller
}{
(2), (3)
}
\lineiv
{
File read by
\function
{
execfile()
}}
%
{
global n.s. of caller
}
%
{
local n.s. of caller
}{
(2), (3)
}
\lineiv
{
Expression read by
\function
{
input()
}}
%
{
global n.s. of caller
}
%
{
local n.s. of caller
}{}
\end{tableiv}
\refbimodindex
{__
main
__}
Notes:
\begin{description}
\item
[n.s.]
means
{
\em
namespace
}
\item
[n.s.]
means
\emph
{
namespace
}
\item
[(1)]
The main module for a script is always called
\module
{__
main
__}
; ``the filename don't enter into it.''
...
...
@@ -154,7 +161,7 @@ dictionary representing the current global and local namespace,
respectively. The effect of modifications to this dictionary on the
namespace are undefined.
%
\footnote
{
The current implementations return the dictionary actually
used to implement the namespace,
{
\em
except
}
for functions, where
used to implement the namespace,
\emph
{
except
}
for functions, where
the optimizer may cause the local namespace to be implemented
differently, and
\function
{
locals()
}
returns a read-only dictionary.
}
...
...
@@ -162,8 +169,8 @@ differently, and \function{locals()} returns a read-only dictionary.}
Exceptions are a means of breaking out of the normal flow of control
of a code block in order to handle errors or other exceptional
conditions. An exception is
{
\em
raised
}
at the point where the error
is detected; it may be
{
\em
handled
}
by the surrounding code block or
conditions. An exception is
\emph
{
raised
}
at the point where the error
is detected; it may be
\emph
{
handled
}
by the surrounding code block or
by any code block that directly or indirectly invoked the code block
where the error occurred.
\index
{
exception
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment