简析Python内置模块pprint
pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。
import pprint array = ["pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。", "特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。"] pprint.pprint(array) # 输出结果 ['pprint是python内置的打印模块,pprint和print唯一的区别就是pprint打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。', '特别是对于特别长的数据打印,print输出结果都在一行,不方便查看,而pprint采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint打印方式。']
但在使用pprint过程中发现,对于字典的输出会默认排序:
import pprint d = { 5: 'a', 1: 'd', 3: 'b', 6: 'e' } pprint.pprint(d) # 输出结果 {1: 'd', 3: 'b', 5: 'a', 6: 'e'}
显然,字典d经过pprint的打印已经被排序了。有时这并不是我们想要的,怎么才能取消pprint默认的排序功能?通过help(pprint),发现pprint模块有个PrettyPrinter类:
class PrettyPrinter(builtins.object) | PrettyPrinter(indent=1, width=80, depth=None, stream=None, *, compact=False, sort_dicts=True) | | Methods defined here: | | __init__(self, indent=1, width=80, depth=None, stream=None, *, compact=False, sort_dicts=True) | Handle pretty printing operations onto a stream using a set of | configured parameters. ...
我们看到PrettyPrinter类初始化有个关键字参数sort_dicts=True,那么将sort_dicts=True改为False呢?
import pprint d = { 5: 'a', 1: 'd', 3: 'b', 6: 'e' } pp = pprint.PrettyPrinter(sort_dicts=False) pp.pprint(d) # 输出 {5: 'a', 1: 'd', 3: 'b', 6: 'e'}
果然输出没有对字典d做出排序操作,完美。我使用的python 3.8.1,可能在低于该版本的python中PrettyPrinter类初始化方法中并没有sort_dicts=False这个关键字参数,大家使用时注意一下。