python常用模块之print加强版——pprint
本文简单介绍了 python 中 print 加强版 pprint 的用法。
pprint — Data pretty printer
pprint --- 数据美化输出
从 help(pprint) 中的函数原型来看:
pprint
当信息超过80个字符时将分行显示,还可通过 ident 设置分行缩进。- 如果不需要指定 stream、indent、width、depth、compact 等控制信息,可采用简易接口
pp
即可。
>>> help(pprint)
FUNCTIONS
pp(object, *args, sort_dicts=False, **kwargs)
Pretty-print a Python object
pprint(object, stream=None, indent=1, width=80, depth=None, *, compact=False, sort_dicts=True)
Pretty-print a Python object to a stream [default is sys.stdout].
list#
以下示例,通过简单列表推导,调用 pprint.pp 打印内建模块 builtins 中的符号列表。
>>> import builtins, pprint
>>> builtin_sym=[n for n in dir(builtins) if not n.startswith('_')]
>>> pprint.pp(builtin_sym)
以下示例,通过简单列表推导,过滤列表list公用接口,并分别用 print、pprint 打印符号列表。
import pprint
list_all = [n for n in dir(list) if not n.startswith('_')]
print(list_all)
pprint.pp(list_all)
print 在一行打印整个列表,而 pprint 则在每一行输出一个列表项:
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort']
以下示例,分别用 print、pprint 打印 string 模块向外导出的符号列表:
['ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace', 'Formatter', 'Template']
[ 'ascii_letters',
'ascii_lowercase',
'ascii_uppercase',
'capwords',
'digits',
'hexdigits',
'octdigits',
'printable',
'punctuation',
'whitespace',
'Formatter',
'Template']
以下示例,分别用 print、pprint 打印 sys.path:
对于长列表,pprint 更方便地逐行查看每个元素:
['', '/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip', '/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10', '/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages', '/usr/local/Cellar/pygments/2.13.0/libexec/lib/python3.10/site-packages']
['',
'/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python310.zip',
'/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10',
'/usr/local/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload',
'/usr/local/lib/python3.10/site-packages',
'/usr/local/Cellar/pygments/2.13.0/libexec/lib/python3.10/site-packages']
dict#
以下示例,分别用 print、pprint 打印字典 dict 对象:
pprint 打印字典时,会在计算其显示形式前会先根据键来排序。
以下示例,分别用 print、pprint 打印Python 实现信息字典对象:
import pprint
import sys
print(sys.implementation.__dict__)
pprint.pprint(sys.implementation.__dict__)
对于长字典,pprint 更方便地逐行查看每个item:
{'name': 'cpython', 'cache_tag': 'cpython-310', 'version': sys.version_info(major=3, minor=10, micro=8, releaselevel='final', serial=0), 'hexversion': 50989296, '_multiarch': 'darwin'}
{'_multiarch': 'darwin',
'cache_tag': 'cpython-310',
'hexversion': 50989296,
'name': 'cpython',
'version': sys.version_info(major=3, minor=10, micro=8, releaselevel='final', serial=0)}