非常教程

Python参考手册

数据类型 | Data Types

pprint

源代码: Lib / pprint.py

pprint模块提供了以可以用作解释器输入的形式“漂亮地”打印任意Python数据结构的能力。如果格式化结构包含不是基本Python类型的对象,则该表示可能无法加载。如果包含诸如文件,套接字,类或实例的对象,以及许多其他不能表示为Python常量的内置对象,则可能会出现这种情况。

如果可以的话,格式化的表示将对象保留在一行上,如果它们不在允许的宽度内,则将它们分成多行。PrettyPrinter如果需要调整宽度约束,则显式构造对象。

在版本2.5中进行了更改:字典在计算显示之前按键排序; 在2.5之前,只有当字典显示需要多行时,才会对字典进行排序,但没有记录。

在版本2.6中进行了更改:添加了对set和的支持frozenset

pprint模块定义了一个类:

class pprint.PrettyPrinter(indent=1, width=80, depth=None, stream=None)

构建一个PrettyPrinter实例。这个构造函数理解几个关键字参数。输出流可以使用stream关键字来设置; 在流对象上使用的唯一方法是文件协议的write()方法。如果没有指定,则PrettyPrinter采用sys.stdout。可以使用三个附加参数来控制格式化表示。关键字是缩进深度宽度。为每个递归级别添加的缩进量由缩进指定; 默认值是1。其他值可能会导致输出看起来有点奇怪,但可以使嵌套更容易找到。可以打印的层数由深度控制; 如果正在打印的数据结构太深,则下一个包含的级别将被替换为...。默认情况下,格式化对象的深度没有限制。所需的输出宽度使用width参数进行约束; 默认是80个字符。如果一个结构不能在约束宽度内格式化,将尽最大努力。

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff[:])
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(stuff)
[   ['spam', 'eggs', 'lumberjack', 'knights', 'ni'],
    'spam',
    'eggs',
    'lumberjack',
    'knights',
    'ni']
>>> tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead',
... ('parrot', ('fresh fruit',))))))))
>>> pp = pprint.PrettyPrinter(depth=6)
>>> pp.pprint(tup)
('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead', (...)))))))

PrettyPrinter类支持几种衍生物功能:

pprint.pformat(object, indent=1, width=80, depth=None)

以字符串形式返回对象的格式化表示。缩进宽度深度PrettyPrinter作为格式参数传递给构造函数。

在版本2.4中更改:添加了参数缩进宽度深度

pprint.pprint(object, stream=None, indent=1, width=80, depth=None)

打印正在流中对象的格式化表示,然后是换行符。如果是,使用。这可以在交互式解释器中使用,而不是用于检查值的语句。缩进宽度深度将作为格式参数传递给构造函数。Nonesys.stdoutprintPrettyPrinter

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']

在版本2.4中更改:添加了参数缩进宽度深度

pprint.isreadable(object)

确定对象的格式化表示是“可读的”,还是可以用来重构使用的值eval()。这总是返回False递归对象。

>>> pprint.isreadable(stuff)
False

pprint.isrecursive(object)

确定对象是否需要递归表示。

还定义了一个支持功能:

pprint.saferepr(object)

返回对象的字符串表示形式,保护对象不受递归数据结构的影响。如果对象的表示公开递归条目,则递归引用将被表示为<Recursion on typename with id=number>。该表示不是格式化的。

>>> pprint.saferepr(stuff)
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"

1. PrettyPrinter对象

PrettyPrinter 实例具有以下方法:

PrettyPrinter.pformat(object)

返回对象的格式化表示。这考虑到传递给PrettyPrinter构造函数的选项。

PrettyPrinter.pprint(object)

在配置的流上打印对象的格式化表示,然后是换行符。

以下方法提供了相同名称的相应功能的实现。由于PrettyPrinter不需要创建新对象,因此在实例上使用这些方法稍微有效一些。

PrettyPrinter.isreadable(object)

确定对象的格式化表示是“可读的”,还是可用于重构使用的值eval()。请注意,这将返回False递归对象。如果设置了深度参数PrettyPrinter并且对象比允许的深度更深,则返回False

PrettyPrinter.isrecursive(object)

确定对象是否需要递归表示。

该方法作为钩子提供,允许子类修改对象转换为字符串的方式。默认实现使用实现的内部saferepr()

PrettyPrinter.format(object, context, maxlevels, level)

返回三个值:作为字符串的对象的格式化版本,指示结果是否可读的标志以及指示是否检测到递归的标志。第一个参数是要呈现的对象。第二个是一个字典,它包含作为id()当前表示上下文的一部分的对象(影响该表示的对象的直接和间接容器)作为关键字; 如果需要呈现的对象已经在上下文中表示,则第三个返回值应该是True。递归调用format()方法应该为容器添加额外的条目到这个字典。第三个参数,maxlevels,给出了递归的请求限制; 这将是0如果没有要求的限制。这个参数应该不加修改地传递给递归调用。第四个参数,水平,给出当前的水平; 递归调用应该传递一个小于当前调用的值。

2.3版本的新功能。

实施例2 pprint

这个例子演示了pprint()函数及其参数的几个用法。

>>> import pprint
>>> tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead',
... ('parrot', ('fresh fruit',))))))))
>>> stuff = ['a' * 10, tup, ['a' * 30, 'b' * 30], ['c' * 20, 'd' * 20]]
>>> pprint.pprint(stuff)
['aaaaaaaaaa',
 ('spam',
  ('eggs',
   ('lumberjack',
    ('knights', ('ni', ('dead', ('parrot', ('fresh fruit',)))))))),
 ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
 ['cccccccccccccccccccc', 'dddddddddddddddddddd']]
>>> pprint.pprint(stuff, depth=3)
['aaaaaaaaaa',
 ('spam', ('eggs', (...))),
 ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
 ['cccccccccccccccccccc', 'dddddddddddddddddddd']]
>>> pprint.pprint(stuff, width=60)
['aaaaaaaaaa',
 ('spam',
  ('eggs',
   ('lumberjack',
    ('knights',
     ('ni', ('dead', ('parrot', ('fresh fruit',)))))))),
 ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
  'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
 ['cccccccccccccccccccc', 'dddddddddddddddddddd']]
Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法