[Python-checkins] python/dist/src/Doc/lib libbltin.tex, 1.8, 1.8.52.1

fdrake at users.sourceforge.net fdrake at users.sourceforge.net
Thu Dec 23 17:55:35 CET 2004


Update of /cvsroot/python/python/dist/src/Doc/lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16308/lib

Modified Files:
      Tag: release24-maint
	libbltin.tex 
Log Message:
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)


Index: libbltin.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/lib/libbltin.tex,v
retrieving revision 1.8
retrieving revision 1.8.52.1
diff -u -d -r1.8 -r1.8.52.1
--- libbltin.tex	23 Apr 1999 17:11:53 -0000	1.8
+++ libbltin.tex	23 Dec 2004 16:55:32 -0000	1.8.52.1
@@ -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.



More information about the Python-checkins mailing list