mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
161 lines
32 KiB
HTML
161 lines
32 KiB
HTML
<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">>>> </span><span class="kn">import</span> <span class="nn">pprint</span>
|
||
<span class="gp">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </span><span class="kn">import</span> <span class="nn">pprint</span>
|
||
<span class="gp">>>> </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">>>> </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">>>> </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">[<Recursion on list with id=...>,</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">>>> </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"><Recursion</span> <span class="pre">on</span> <span class="pre">typename</span> <span class="pre">with</span> <span class="pre">id=number></span></code>。</span><span class="yiyi-st" id="yiyi-52">显示不会被另外地格式化。</span></p><pre><code class="language-python"><span></span><span class="gp">>>> </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">"[<Recursion on list with id=...>, '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">>>> </span><span class="kn">import</span> <span class="nn">json</span>
|
||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">pprint</span>
|
||
<span class="gp">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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">>>> </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> |