uTools-Manuals/docs/python/pprint.html
2019-04-21 11:50:48 +08:00

161 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-pprint"><h1><span class="yiyi-st" id="yiyi-10">8.11. <a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-mod docutils literal"><span class="pre">pprint</span></code></a> - 数据漂亮打印机</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/pprint.py">Lib/pprint.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">模块 <a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-mod docutils literal"><span class="pre">pprint</span></code></a> 提供了“整洁地打印”任意 Python 数据结构的能力,它的输出可以用作解释器的输入。</span><span class="yiyi-st" id="yiyi-13">如果被格式化的结构包括了非基本的Python类型对象打印结果可能不能被解释器装载。</span><span class="yiyi-st" id="yiyi-14">如果包括诸如文件套接字或类的对象以及许多其他不能表示为Python字面值的对象则可能是这种情况。</span></p><p><span class="yiyi-st" id="yiyi-15">如果可能,打印结果在一行;如果超出了允许的宽度,它被断成多行。</span><span class="yiyi-st" id="yiyi-16">如果需要明确地调整宽度,构造 <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 对象。</span></p><p><span class="yiyi-st" id="yiyi-17">在计算显示之前,按键对字典进行排序。</span></p><p><span class="yiyi-st" id="yiyi-18">模块 <a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-mod docutils literal"><span class="pre">pprint</span></code></a> 定义了类:</span></p><dl class="class"><dt id="pprint.PrettyPrinter"><span class="yiyi-st" id="yiyi-19"><em class="property">class </em><code class="descclassname">pprint.</code><code class="descname">PrettyPrinter</code><span class="sig-paren">(</span><em>indent=1</em>, <em>width=80</em>, <em>depth=None</em>, <em>stream=None</em>, <em>*</em>, <em>compact=False</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-20">构造 <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 实例。</span><span class="yiyi-st" id="yiyi-21">构造器理解许多关键字参数。</span><span class="yiyi-st" id="yiyi-22">可以使用<em></em>关键字设置输出流;对流对象使用的唯一方法是文件协议的<code class="xref py py-meth docutils literal"><span class="pre">write()</span></code>方法。</span><span class="yiyi-st" id="yiyi-23">如果未指明, <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 使用 <code class="docutils literal"><span class="pre">sys.stdout</span></code></span><span class="yiyi-st" id="yiyi-24">每个递归级别添加的缩进量由<em>缩进</em>指定默认值为1。</span><span class="yiyi-st" id="yiyi-25">其它值会导致输出看上去有点奇怪,但使得嵌套更容易识别。</span><span class="yiyi-st" id="yiyi-26">可以打印的级别数量由<em>深度</em>控制;如果正在打印的数据结构太深,则下一个包含的级别将替换为<code class="docutils literal"><span class="pre">...</span></code>。默认情况下,对正在格式化的对象的深度没有约束。</span><span class="yiyi-st" id="yiyi-27">使用<em>width</em>参数限制所需的输出宽度默认值为80个字符。</span><span class="yiyi-st" id="yiyi-28">如果结构不能被格式化到指定宽度内,打印器将做最大努力。</span><span class="yiyi-st" id="yiyi-29">如果<em>compact</em>为false默认值长序列的每个项目将在单独的行上格式化。</span><span class="yiyi-st" id="yiyi-30">如果<em>compact</em>为真,则在每个输出行上将格式化将适合<em>宽度</em>内的项目数。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-31"><span class="versionmodified">在版本3.4中已更改:</span>添加了<em>compact</em>参数。</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">pprint</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">stuff</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'spam'</span><span class="p">,</span> <span class="s1">'eggs'</span><span class="p">,</span> <span class="s1">'lumberjack'</span><span class="p">,</span> <span class="s1">'knights'</span><span class="p">,</span> <span class="s1">'ni'</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">stuff</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">stuff</span><span class="p">[:])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span> <span class="o">=</span> <span class="n">pprint</span><span class="o">.</span><span class="n">PrettyPrinter</span><span class="p">(</span><span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">stuff</span><span class="p">)</span>
<span class="go">[ ['spam', 'eggs', 'lumberjack', 'knights', 'ni'],</span>
<span class="go"> 'spam',</span>
<span class="go"> 'eggs',</span>
<span class="go"> 'lumberjack',</span>
<span class="go"> 'knights',</span>
<span class="go"> 'ni']</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span> <span class="o">=</span> <span class="n">pprint</span><span class="o">.</span><span class="n">PrettyPrinter</span><span class="p">(</span><span class="n">width</span><span class="o">=</span><span class="mi">41</span><span class="p">,</span> <span class="n">compact</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">stuff</span><span class="p">)</span>
<span class="go">[['spam', 'eggs', 'lumberjack',</span>
<span class="go"> 'knights', 'ni'],</span>
<span class="go"> 'spam', 'eggs', 'lumberjack', 'knights',</span>
<span class="go"> 'ni']</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">tup</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'spam'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'eggs'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'lumberjack'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'knights'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'ni'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'dead'</span><span class="p">,</span>
<span class="gp">... </span><span class="p">(</span><span class="s1">'parrot'</span><span class="p">,</span> <span class="p">(</span><span class="s1">'fresh fruit'</span><span class="p">,))))))))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span> <span class="o">=</span> <span class="n">pprint</span><span class="o">.</span><span class="n">PrettyPrinter</span><span class="p">(</span><span class="n">depth</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pp</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span>
<span class="go">('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead', (...)))))))</span>
</code></pre></div></dd></dl><p><span class="yiyi-st" id="yiyi-32"><a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-mod docutils literal"><span class="pre">pprint</span></code></a>模块还提供了几个快捷方式功能:</span></p><dl class="function"><dt id="pprint.pformat"><span class="yiyi-st" id="yiyi-33"><code class="descclassname">pprint.</code><code class="descname">pformat</code><span class="sig-paren">(</span><em>object</em>, <em>indent=1</em>, <em>width=80</em>, <em>depth=None</em>, <em>*</em>, <em>compact=False</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-34">以字符串的形式返回<em>object</em>的打印结果。</span><span class="yiyi-st" id="yiyi-35"><em>缩进</em><em>宽度</em><em>深度</em><em>compact</em>将传递到<a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a>格式化参数。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-36"><span class="versionmodified">在版本3.4中已更改:</span>添加了<em>compact</em>参数。</span></p></div></dd></dl><dl class="function"><dt id="pprint.pprint"><span class="yiyi-st" id="yiyi-37"><code class="descclassname">pprint.</code><code class="descname">pprint</code><span class="sig-paren">(</span><em>object</em>, <em>stream=None</em>, <em>indent=1</em>, <em>width=80</em>, <em>depth=None</em>, <em>*</em>, <em>compact=False</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-38"><em>object</em>打印到<em>stream</em>中,结尾输出新行。</span><span class="yiyi-st" id="yiyi-39">如果 <em>stream</em><code class="docutils literal"><span class="pre">None</span></code>,使用 <code class="docutils literal"><span class="pre">sys.stdout</span></code></span><span class="yiyi-st" id="yiyi-40">这可以在交互式解释器中使用,而不是用于检查值的<a class="reference internal" href="functions.html#print" title="print"><code class="xref py py-func docutils literal"><span class="pre">print()</span></code></a>函数(您甚至可以重新分配<code class="docutils literal"><span class="pre">print</span> <span class="pre">=</span> <span class="pre">pprint.pprint</span></code>以在范围内使用)。</span><span class="yiyi-st" id="yiyi-41"><em>缩进</em><em>宽度</em><em>深度</em><em>compact</em>将传递到<a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a>格式化参数。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-42"><span class="versionmodified">在版本3.4中已更改:</span>添加了<em>compact</em>参数。</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">pprint</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">stuff</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'spam'</span><span class="p">,</span> <span class="s1">'eggs'</span><span class="p">,</span> <span class="s1">'lumberjack'</span><span class="p">,</span> <span class="s1">'knights'</span><span class="p">,</span> <span class="s1">'ni'</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">stuff</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">stuff</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">stuff</span><span class="p">)</span>
<span class="go">[&lt;Recursion on list with id=...&gt;,</span>
<span class="go"> 'spam',</span>
<span class="go"> 'eggs',</span>
<span class="go"> 'lumberjack',</span>
<span class="go"> 'knights',</span>
<span class="go"> 'ni']</span>
</code></pre></div></dd></dl><dl class="function"><dt id="pprint.isreadable"><span class="yiyi-st" id="yiyi-43"><code class="descclassname">pprint.</code><code class="descname">isreadable</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p id="index-0"><span class="yiyi-st" id="yiyi-44">判断 <em>object</em> 的打印结果是否“可读”,或者能否用 <a class="reference internal" href="functions.html#eval" title="eval"><code class="xref py py-func docutils literal"><span class="pre">eval()</span></code></a>来重新构造值。</span><span class="yiyi-st" id="yiyi-45">对于递归对象它总是返回 <code class="docutils literal"><span class="pre">False</span></code></span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">isreadable</span><span class="p">(</span><span class="n">stuff</span><span class="p">)</span>
<span class="go">False</span>
</code></pre></dd></dl><dl class="function"><dt id="pprint.isrecursive"><span class="yiyi-st" id="yiyi-46"><code class="descclassname">pprint.</code><code class="descname">isrecursive</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-47">判断<em>object</em>是否需要递归打印。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-48">还定义了一个支持函数:</span></p><dl class="function"><dt id="pprint.saferepr"><span class="yiyi-st" id="yiyi-49"><code class="descclassname">pprint.</code><code class="descname">saferepr</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-50">返回<em>object</em>的字符串表示,对于递归的数据结构有保护。</span><span class="yiyi-st" id="yiyi-51">如果 <em>object</em> 的显示有递归的情况发生,递归的引用将会被表示成 <code class="docutils literal"><span class="pre">&lt;Recursion</span> <span class="pre">on</span> <span class="pre">typename</span> <span class="pre">with</span> <span class="pre">id=number&gt;</span></code></span><span class="yiyi-st" id="yiyi-52">显示不会被另外地格式化。</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">saferepr</span><span class="p">(</span><span class="n">stuff</span><span class="p">)</span>
<span class="go">"[&lt;Recursion on list with id=...&gt;, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"</span>
</code></pre></dd></dl><div class="section" id="prettyprinter-objects"><h2><span class="yiyi-st" id="yiyi-53">8.11.1.</span><span class="yiyi-st" id="yiyi-54">PrettyPrinter对象</span></h2><p><span class="yiyi-st" id="yiyi-55"><a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 实例有以下方法:</span></p><dl class="method"><dt id="pprint.PrettyPrinter.pformat"><span class="yiyi-st" id="yiyi-56"><code class="descclassname">PrettyPrinter.</code><code class="descname">pformat</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-57">返回<em>object</em>的格式化表示。</span><span class="yiyi-st" id="yiyi-58">它会考虑传给 <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 构造器的选项。</span></p></dd></dl><dl class="method"><dt id="pprint.PrettyPrinter.pprint"><span class="yiyi-st" id="yiyi-59"><code class="descclassname">PrettyPrinter.</code><code class="descname">pprint</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-60"><em>object</em>打印到流中,结尾输出新行 。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-61">以下方法对对应的同名函数提供了实现。</span><span class="yiyi-st" id="yiyi-62">在实例上使用这些方法会更有效,因为不用创建新的 <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> 对象。</span></p><dl class="method"><dt id="pprint.PrettyPrinter.isreadable"><span class="yiyi-st" id="yiyi-63"><code class="descclassname">PrettyPrinter.</code><code class="descname">isreadable</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p id="index-1"><span class="yiyi-st" id="yiyi-64">判断对象的打印结果是否“可读”,或者能否用 <a class="reference internal" href="functions.html#eval" title="eval"><code class="xref py py-func docutils literal"><span class="pre">eval()</span></code></a>来重新构造值。</span><span class="yiyi-st" id="yiyi-65">注意对于递归对象它返回 <code class="docutils literal"><span class="pre">False</span></code></span><span class="yiyi-st" id="yiyi-66">If the <em>depth</em> parameter of the <a class="reference internal" href="#pprint.PrettyPrinter" title="pprint.PrettyPrinter"><code class="xref py py-class docutils literal"><span class="pre">PrettyPrinter</span></code></a> is set and the object is deeper than allowed, this returns <code class="docutils literal"><span class="pre">False</span></code>.</span></p></dd></dl><dl class="method"><dt id="pprint.PrettyPrinter.isrecursive"><span class="yiyi-st" id="yiyi-67"><code class="descclassname">PrettyPrinter.</code><code class="descname">isrecursive</code><span class="sig-paren">(</span><em>object</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-68">判断对象是否需要递归打印。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-69">这个方法是个钩子,子类可以修改它,从而改变对象转为字符串的方式。</span><span class="yiyi-st" id="yiyi-70">默认使用了 <a class="reference internal" href="#pprint.saferepr" title="pprint.saferepr"><code class="xref py py-func docutils literal"><span class="pre">saferepr()</span></code></a> 的实现。</span></p><dl class="method"><dt id="pprint.PrettyPrinter.format"><span class="yiyi-st" id="yiyi-71"><code class="descclassname">PrettyPrinter.</code><code class="descname">format</code><span class="sig-paren">(</span><em>object</em>, <em>context</em>, <em>maxlevels</em>, <em>level</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-72">返回三个值: <em>object</em> 格式化后的字符串,表明结果是否可读的标志位,表明是否检测到递归的标志位。</span><span class="yiyi-st" id="yiyi-73">第一个参数是需要转化的对象。</span><span class="yiyi-st" id="yiyi-74">第二个是包含作为当前呈现上下文(对影响呈现的<em>对象</em>的直接和间接容器)的一部分的对象的<a class="reference internal" href="functions.html#id" title="id"><code class="xref py py-func docutils literal"><span class="pre">id()</span></code></a>的字典,作为键;如果需要呈现已经在<em>上下文</em>中表示的对象,则第三返回值应该是<code class="docutils literal"><span class="pre">True</span></code></span><span class="yiyi-st" id="yiyi-75">递归调用 <a class="reference internal" href="#pprint.PrettyPrinter.format" title="pprint.PrettyPrinter.format"><code class="xref py py-meth docutils literal"><span class="pre">format()</span></code></a> 方法会向这个字典中添加额外的容器条目。</span><span class="yiyi-st" id="yiyi-76">第三个参数,<em>maxlevels</em>,给出了递归的请求限制;如果没有请求的限制,这将是<code class="docutils literal"><span class="pre">0</span></code></span><span class="yiyi-st" id="yiyi-77">递归调用时这个参数不改变。</span><span class="yiyi-st" id="yiyi-78">第四个参数,<em>level</em>,给出当前级别;递归调用应传递的值小于当前调用的值。</span></p></dd></dl></div><div class="section" id="example"><h2><span class="yiyi-st" id="yiyi-79">8.11.2.</span><span class="yiyi-st" id="yiyi-80">示例</span></h2><p><span class="yiyi-st" id="yiyi-81">为了演示<a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-func docutils literal"><span class="pre">pprint()</span></code></a>函数及其参数的多种用途,让我们从<a class="reference external" href="https://pypi.python.org/pypi">PyPI</a>获取有关项目的信息:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">json</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">pprint</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="n">urlopen</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="n">urlopen</span><span class="p">(</span><span class="s1">'http://pypi.python.org/pypi/Twisted/json'</span><span class="p">)</span> <span class="k">as</span> <span class="n">url</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">http_info</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
<span class="gp">... </span> <span class="n">raw_data</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">http_info</span><span class="o">.</span><span class="n">get_content_charset</span><span class="p">())</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">project_info</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">raw_data</span><span class="p">)</span>
</code></pre><p><span class="yiyi-st" id="yiyi-82">在其基本形式中,<a class="reference internal" href="#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-func docutils literal"><span class="pre">pprint()</span></code></a>显示整个对象:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">project_info</span><span class="p">)</span>
<span class="go">{'info': {'_pypi_hidden': False,</span>
<span class="go"> '_pypi_ordering': 125,</span>
<span class="go"> 'author': 'Glyph Lefkowitz',</span>
<span class="go"> 'author_email': 'glyph@twistedmatrix.com',</span>
<span class="go"> 'bugtrack_url': '',</span>
<span class="go"> 'cheesecake_code_kwalitee_id': None,</span>
<span class="go"> 'cheesecake_documentation_id': None,</span>
<span class="go"> 'cheesecake_installability_id': None,</span>
<span class="go"> 'classifiers': ['Programming Language :: Python :: 2.6',</span>
<span class="go"> 'Programming Language :: Python :: 2.7',</span>
<span class="go"> 'Programming Language :: Python :: 2 :: Only'],</span>
<span class="go"> 'description': 'An extensible framework for Python programming, with '</span>
<span class="go"> 'special focus\r\n'</span>
<span class="go"> 'on event-based network programming and multiprotocol '</span>
<span class="go"> 'integration.',</span>
<span class="go"> 'docs_url': '',</span>
<span class="go"> 'download_url': 'UNKNOWN',</span>
<span class="go"> 'home_page': 'http://twistedmatrix.com/',</span>
<span class="go"> 'keywords': '',</span>
<span class="go"> 'license': 'MIT',</span>
<span class="go"> 'maintainer': '',</span>
<span class="go"> 'maintainer_email': '',</span>
<span class="go"> 'name': 'Twisted',</span>
<span class="go"> 'package_url': 'http://pypi.python.org/pypi/Twisted',</span>
<span class="go"> 'platform': 'UNKNOWN',</span>
<span class="go"> 'release_url': 'http://pypi.python.org/pypi/Twisted/12.3.0',</span>
<span class="go"> 'requires_python': None,</span>
<span class="go"> 'stable_version': None,</span>
<span class="go"> 'summary': 'An asynchronous networking framework written in Python',</span>
<span class="go"> 'version': '12.3.0'},</span>
<span class="go"> 'urls': [{'comment_text': '',</span>
<span class="go"> 'downloads': 71844,</span>
<span class="go"> 'filename': 'Twisted-12.3.0.tar.bz2',</span>
<span class="go"> 'has_sig': False,</span>
<span class="go"> 'md5_digest': '6e289825f3bf5591cfd670874cc0862d',</span>
<span class="go"> 'packagetype': 'sdist',</span>
<span class="go"> 'python_version': 'source',</span>
<span class="go"> 'size': 2615733,</span>
<span class="go"> 'upload_time': '2012-12-26T12:47:03',</span>
<span class="go"> 'url': 'https://pypi.python.org/packages/source/T/Twisted/Twisted-12.3.0.tar.bz2'},</span>
<span class="go"> {'comment_text': '',</span>
<span class="go"> 'downloads': 5224,</span>
<span class="go"> 'filename': 'Twisted-12.3.0.win32-py2.7.msi',</span>
<span class="go"> 'has_sig': False,</span>
<span class="go"> 'md5_digest': '6b778f5201b622a5519a2aca1a2fe512',</span>
<span class="go"> 'packagetype': 'bdist_msi',</span>
<span class="go"> 'python_version': '2.7',</span>
<span class="go"> 'size': 2916352,</span>
<span class="go"> 'upload_time': '2012-12-26T12:48:15',</span>
<span class="go"> 'url': 'https://pypi.python.org/packages/2.7/T/Twisted/Twisted-12.3.0.win32-py2.7.msi'}]}</span>
</code></pre><p><span class="yiyi-st" id="yiyi-83">结果可以限于某个<em>深度</em>(省略号用于更深的内容):</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">project_info</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="go">{'info': {'_pypi_hidden': False,</span>
<span class="go"> '_pypi_ordering': 125,</span>
<span class="go"> 'author': 'Glyph Lefkowitz',</span>
<span class="go"> 'author_email': 'glyph@twistedmatrix.com',</span>
<span class="go"> 'bugtrack_url': '',</span>
<span class="go"> 'cheesecake_code_kwalitee_id': None,</span>
<span class="go"> 'cheesecake_documentation_id': None,</span>
<span class="go"> 'cheesecake_installability_id': None,</span>
<span class="go"> 'classifiers': [...],</span>
<span class="go"> 'description': 'An extensible framework for Python programming, with '</span>
<span class="go"> 'special focus\r\n'</span>
<span class="go"> 'on event-based network programming and multiprotocol '</span>
<span class="go"> 'integration.',</span>
<span class="go"> 'docs_url': '',</span>
<span class="go"> 'download_url': 'UNKNOWN',</span>
<span class="go"> 'home_page': 'http://twistedmatrix.com/',</span>
<span class="go"> 'keywords': '',</span>
<span class="go"> 'license': 'MIT',</span>
<span class="go"> 'maintainer': '',</span>
<span class="go"> 'maintainer_email': '',</span>
<span class="go"> 'name': 'Twisted',</span>
<span class="go"> 'package_url': 'http://pypi.python.org/pypi/Twisted',</span>
<span class="go"> 'platform': 'UNKNOWN',</span>
<span class="go"> 'release_url': 'http://pypi.python.org/pypi/Twisted/12.3.0',</span>
<span class="go"> 'requires_python': None,</span>
<span class="go"> 'stable_version': None,</span>
<span class="go"> 'summary': 'An asynchronous networking framework written in Python',</span>
<span class="go"> 'version': '12.3.0'},</span>
<span class="go"> 'urls': [{...}, {...}]}</span>
</code></pre><p><span class="yiyi-st" id="yiyi-84">此外,可以建议最大字符<em>宽度</em></span><span class="yiyi-st" id="yiyi-85">如果长对象不能拆分,将超出指定的宽度:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">project_info</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
<span class="go">{'info': {'_pypi_hidden': False,</span>
<span class="go"> '_pypi_ordering': 125,</span>
<span class="go"> 'author': 'Glyph Lefkowitz',</span>
<span class="go"> 'author_email': 'glyph@twistedmatrix.com',</span>
<span class="go"> 'bugtrack_url': '',</span>
<span class="go"> 'cheesecake_code_kwalitee_id': None,</span>
<span class="go"> 'cheesecake_documentation_id': None,</span>
<span class="go"> 'cheesecake_installability_id': None,</span>
<span class="go"> 'classifiers': [...],</span>
<span class="go"> 'description': 'An extensible '</span>
<span class="go"> 'framework for Python '</span>
<span class="go"> 'programming, with '</span>
<span class="go"> 'special focus\r\n'</span>
<span class="go"> 'on event-based network '</span>
<span class="go"> 'programming and '</span>
<span class="go"> 'multiprotocol '</span>
<span class="go"> 'integration.',</span>
<span class="go"> 'docs_url': '',</span>
<span class="go"> 'download_url': 'UNKNOWN',</span>
<span class="go"> 'home_page': 'http://twistedmatrix.com/',</span>
<span class="go"> 'keywords': '',</span>
<span class="go"> 'license': 'MIT',</span>
<span class="go"> 'maintainer': '',</span>
<span class="go"> 'maintainer_email': '',</span>
<span class="go"> 'name': 'Twisted',</span>
<span class="go"> 'package_url': 'http://pypi.python.org/pypi/Twisted',</span>
<span class="go"> 'platform': 'UNKNOWN',</span>
<span class="go"> 'release_url': 'http://pypi.python.org/pypi/Twisted/12.3.0',</span>
<span class="go"> 'requires_python': None,</span>
<span class="go"> 'stable_version': None,</span>
<span class="go"> 'summary': 'An asynchronous networking '</span>
<span class="go"> 'framework written in '</span>
<span class="go"> 'Python',</span>
<span class="go"> 'version': '12.3.0'},</span>
<span class="go"> 'urls': [{...}, {...}]}</span>
</code></pre></div></div></div>