source: vendor/python/2.5/Doc/lib/libpprint.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 8.2 KB
Line 
1\section{\module{pprint} ---
2 Data pretty printer}
3
4\declaremodule{standard}{pprint}
5\modulesynopsis{Data pretty printer.}
6\moduleauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
7\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
8
9
10The \module{pprint} module provides a capability to ``pretty-print''
11arbitrary Python data structures in a form which can be used as input
12to the interpreter. If the formatted structures include objects which
13are not fundamental Python types, the representation may not be
14loadable. This may be the case if objects such as files, sockets,
15classes, or instances are included, as well as many other builtin
16objects which are not representable as Python constants.
17
18The formatted representation keeps objects on a single line if it can,
19and breaks them onto multiple lines if they don't fit within the
20allowed width. Construct \class{PrettyPrinter} objects explicitly if
21you need to adjust the width constraint.
22
23\versionchanged[Dictionaries are sorted by key before the display is
24computed; before 2.5, a dictionary was sorted only if its display
25required more than one line, although that wasn't documented]{2.5}
26
27The \module{pprint} module defines one class:
28
29
30% First the implementation class:
31
32\begin{classdesc}{PrettyPrinter}{...}
33Construct a \class{PrettyPrinter} instance. This constructor
34understands several keyword parameters. An output stream may be set
35using the \var{stream} keyword; the only method used on the stream
36object is the file protocol's \method{write()} method. If not
37specified, the \class{PrettyPrinter} adopts \code{sys.stdout}. Three
38additional parameters may be used to control the formatted
39representation. The keywords are \var{indent}, \var{depth}, and
40\var{width}. The amount of indentation added for each recursive level
41is specified by \var{indent}; the default is one. Other values can
42cause output to look a little odd, but can make nesting easier to
43spot. The number of levels which may be printed is controlled by
44\var{depth}; if the data structure being printed is too deep, the next
45contained level is replaced by \samp{...}. By default, there is no
46constraint on the depth of the objects being formatted. The desired
47output width is constrained using the \var{width} parameter; the
48default is eighty characters. If a structure cannot be formatted
49within the constrained width, a best effort will be made.
50
51\begin{verbatim}
52>>> import pprint, sys
53>>> stuff = sys.path[:]
54>>> stuff.insert(0, stuff[:])
55>>> pp = pprint.PrettyPrinter(indent=4)
56>>> pp.pprint(stuff)
57[ [ '',
58 '/usr/local/lib/python1.5',
59 '/usr/local/lib/python1.5/test',
60 '/usr/local/lib/python1.5/sunos5',
61 '/usr/local/lib/python1.5/sharedmodules',
62 '/usr/local/lib/python1.5/tkinter'],
63 '',
64 '/usr/local/lib/python1.5',
65 '/usr/local/lib/python1.5/test',
66 '/usr/local/lib/python1.5/sunos5',
67 '/usr/local/lib/python1.5/sharedmodules',
68 '/usr/local/lib/python1.5/tkinter']
69>>>
70>>> import parser
71>>> tup = parser.ast2tuple(
72... parser.suite(open('pprint.py').read()))[1][1][1]
73>>> pp = pprint.PrettyPrinter(depth=6)
74>>> pp.pprint(tup)
75(266, (267, (307, (287, (288, (...))))))
76\end{verbatim}
77\end{classdesc}
78
79
80% Now the derivative functions:
81
82The \class{PrettyPrinter} class supports several derivative functions:
83
84\begin{funcdesc}{pformat}{object\optional{, indent\optional{,
85width\optional{, depth}}}}
86Return the formatted representation of \var{object} as a string. \var{indent},
87\var{width} and \var{depth} will be passed to the \class{PrettyPrinter}
88constructor as formatting parameters.
89\versionchanged[The parameters \var{indent}, \var{width} and \var{depth}
90were added]{2.4}
91\end{funcdesc}
92
93\begin{funcdesc}{pprint}{object\optional{, stream\optional{,
94indent\optional{, width\optional{, depth}}}}}
95Prints the formatted representation of \var{object} on \var{stream},
96followed by a newline. If \var{stream} is omitted, \code{sys.stdout}
97is used. This may be used in the interactive interpreter instead of a
98\keyword{print} statement for inspecting values. \var{indent},
99\var{width} and \var{depth} will be passed to the \class{PrettyPrinter}
100constructor as formatting parameters.
101
102\begin{verbatim}
103>>> stuff = sys.path[:]
104>>> stuff.insert(0, stuff)
105>>> pprint.pprint(stuff)
106[<Recursion on list with id=869440>,
107 '',
108 '/usr/local/lib/python1.5',
109 '/usr/local/lib/python1.5/test',
110 '/usr/local/lib/python1.5/sunos5',
111 '/usr/local/lib/python1.5/sharedmodules',
112 '/usr/local/lib/python1.5/tkinter']
113\end{verbatim}
114\versionchanged[The parameters \var{indent}, \var{width} and \var{depth}
115were added]{2.4}
116\end{funcdesc}
117
118\begin{funcdesc}{isreadable}{object}
119Determine if the formatted representation of \var{object} is
120``readable,'' or can be used to reconstruct the value using
121\function{eval()}\bifuncindex{eval}. This always returns false for
122recursive objects.
123
124\begin{verbatim}
125>>> pprint.isreadable(stuff)
126False
127\end{verbatim}
128\end{funcdesc}
129
130\begin{funcdesc}{isrecursive}{object}
131Determine if \var{object} requires a recursive representation.
132\end{funcdesc}
133
134
135One more support function is also defined:
136
137\begin{funcdesc}{saferepr}{object}
138Return a string representation of \var{object}, protected against
139recursive data structures. If the representation of \var{object}
140exposes a recursive entry, the recursive reference will be represented
141as \samp{<Recursion on \var{typename} with id=\var{number}>}. The
142representation is not otherwise formatted.
143\end{funcdesc}
144
145% This example is outside the {funcdesc} to keep it from running over
146% the right margin.
147\begin{verbatim}
148>>> pprint.saferepr(stuff)
149"[<Recursion on list with id=682968>, '', '/usr/local/lib/python1.5', '/usr/loca
150l/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python
1511.5/sharedmodules', '/usr/local/lib/python1.5/tkinter']"
152\end{verbatim}
153
154
155\subsection{PrettyPrinter Objects}
156\label{PrettyPrinter Objects}
157
158\class{PrettyPrinter} instances have the following methods:
159
160
161\begin{methoddesc}{pformat}{object}
162Return the formatted representation of \var{object}. This takes into
163account the options passed to the \class{PrettyPrinter} constructor.
164\end{methoddesc}
165
166\begin{methoddesc}{pprint}{object}
167Print the formatted representation of \var{object} on the configured
168stream, followed by a newline.
169\end{methoddesc}
170
171The following methods provide the implementations for the
172corresponding functions of the same names. Using these methods on an
173instance is slightly more efficient since new \class{PrettyPrinter}
174objects don't need to be created.
175
176\begin{methoddesc}{isreadable}{object}
177Determine if the formatted representation of the object is
178``readable,'' or can be used to reconstruct the value using
179\function{eval()}\bifuncindex{eval}. Note that this returns false for
180recursive objects. If the \var{depth} parameter of the
181\class{PrettyPrinter} is set and the object is deeper than allowed,
182this returns false.
183\end{methoddesc}
184
185\begin{methoddesc}{isrecursive}{object}
186Determine if the object requires a recursive representation.
187\end{methoddesc}
188
189This method is provided as a hook to allow subclasses to modify the
190way objects are converted to strings. The default implementation uses
191the internals of the \function{saferepr()} implementation.
192
193\begin{methoddesc}{format}{object, context, maxlevels, level}
194Returns three values: the formatted version of \var{object} as a
195string, a flag indicating whether the result is readable, and a flag
196indicating whether recursion was detected. The first argument is the
197object to be presented. The second is a dictionary which contains the
198\function{id()} of objects that are part of the current presentation
199context (direct and indirect containers for \var{object} that are
200affecting the presentation) as the keys; if an object needs to be
201presented which is already represented in \var{context}, the third
202return value should be true. Recursive calls to the \method{format()}
203method should add additional entries for containers to this
204dictionary. The third argument, \var{maxlevels}, gives the requested
205limit to recursion; this will be \code{0} if there is no requested
206limit. This argument should be passed unmodified to recursive calls.
207The fourth argument, \var{level}, gives the current level; recursive
208calls should be passed a value less than that of the current call.
209\versionadded{2.3}
210\end{methoddesc}
Note: See TracBrowser for help on using the repository browser.