|
1 | 1 | \section{\module{__builtin__} --- |
2 | | - Built-in functions} |
| 2 | + Built-in objects} |
3 | 3 |
|
4 | 4 | \declaremodule[builtin]{builtin}{__builtin__} |
5 | | -\modulesynopsis{The set of built-in functions.} |
| 5 | +\modulesynopsis{The module that provides the built-in namespace.} |
6 | 6 |
|
7 | 7 |
|
8 | 8 | This module provides direct access to all `built-in' identifiers of |
9 | | -Python; e.g. \code{__builtin__.open} is the full name for the built-in |
10 | | -function \function{open()}. See section \ref{built-in-funcs}, ``Built-in |
11 | | -Functions.'' |
| 9 | +Python; for example, \code{__builtin__.open} is the full name for the |
| 10 | +built-in function \function{open()}. See chapter~\ref{builtin}, |
| 11 | +``Built-in Objects.'' |
| 12 | + |
| 13 | +This module is not normally accessed explicitly by most applications, |
| 14 | +but can be useful in modules that provide objects with the same name |
| 15 | +as a built-in value, but in which the built-in of that name is also |
| 16 | +needed. For example, in a module that wants to implement an |
| 17 | +\function{open()} function that wraps the built-in \function{open()}, |
| 18 | +this module can be used directly: |
| 19 | + |
| 20 | +\begin{verbatim} |
| 21 | +import __builtin__ |
| 22 | +
|
| 23 | +def open(path): |
| 24 | + f = __builtin__.open(path, 'r') |
| 25 | + return UpperCaser(f) |
| 26 | +
|
| 27 | +class UpperCaser: |
| 28 | + '''Wrapper around a file that converts output to upper-case.''' |
| 29 | +
|
| 30 | + def __init__(self, f): |
| 31 | + self._f = f |
| 32 | +
|
| 33 | + def read(self, count=-1): |
| 34 | + return self._f.read(count).upper() |
| 35 | +
|
| 36 | + # ... |
| 37 | +\end{verbatim} |
| 38 | + |
| 39 | +As an implementation detail, most modules have the name |
| 40 | +\code{__builtins__} (note the \character{s}) made available as part of |
| 41 | +their globals. The value of \code{__builtins__} is normally either |
| 42 | +this module or the value of this modules's \member{__dict__} |
| 43 | +attribute. Since this is an implementation detail, it may not be used |
| 44 | +by alternate implementations of Python. |
0 commit comments