summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2004-12-23 16:55:32 (GMT)
committerFred Drake <fdrake@acm.org>2004-12-23 16:55:32 (GMT)
commit2a3a7ae9e14bee5795004d0b7708d2b6a8fd46fe (patch)
tree7db09b2abc58528ad8d449e13e21aedc776948bd
parent8e1ba59add1cc87b7b0a10ba1c568653b5aa2076 (diff)
downloadcpython-2a3a7ae9e14bee5795004d0b7708d2b6a8fd46fe.zip
cpython-2a3a7ae9e14bee5795004d0b7708d2b6a8fd46fe.tar.gz
cpython-2a3a7ae9e14bee5795004d0b7708d2b6a8fd46fe.tar.bz2
discuss how the __builtin__ module is normally used, and try to clarify the
difference between __builtins__ and __builtin__ (based on an email comment) (backported from trunk revision 1.9)
-rw-r--r--Doc/lib/libbltin.tex43
1 files changed, 38 insertions, 5 deletions
diff --git a/Doc/lib/libbltin.tex b/Doc/lib/libbltin.tex
index 5cc7626..f6abe25 100644
--- a/Doc/lib/libbltin.tex
+++ b/Doc/lib/libbltin.tex
@@ -1,11 +1,44 @@
\section{\module{__builtin__} ---
- Built-in functions}
+ Built-in objects}
\declaremodule[builtin]{builtin}{__builtin__}
-\modulesynopsis{The set of built-in functions.}
+\modulesynopsis{The module that provides the built-in namespace.}
This module provides direct access to all `built-in' identifiers of
-Python; e.g. \code{__builtin__.open} is the full name for the built-in
-function \function{open()}. See section \ref{built-in-funcs}, ``Built-in
-Functions.''
+Python; for example, \code{__builtin__.open} is the full name for the
+built-in function \function{open()}. See chapter~\ref{builtin},
+``Built-in Objects.''
+
+This module is not normally accessed explicitly by most applications,
+but can be useful in modules that provide objects with the same name
+as a built-in value, but in which the built-in of that name is also
+needed. For example, in a module that wants to implement an
+\function{open()} function that wraps the built-in \function{open()},
+this module can be used directly:
+
+\begin{verbatim}
+import __builtin__
+
+def open(path):
+ f = __builtin__.open(path, 'r')
+ return UpperCaser(f)
+
+class UpperCaser:
+ '''Wrapper around a file that converts output to upper-case.'''
+
+ def __init__(self, f):
+ self._f = f
+
+ def read(self, count=-1):
+ return self._f.read(count).upper()
+
+ # ...
+\end{verbatim}
+
+As an implementation detail, most modules have the name
+\code{__builtins__} (note the \character{s}) made available as part of
+their globals. The value of \code{__builtins__} is normally either
+this module or the value of this modules's \member{__dict__}
+attribute. Since this is an implementation detail, it may not be used
+by alternate implementations of Python.