好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

  • 客服QQ
  • 官方微信

    好程序员

    专注高端IT职业培训

[Python] 好程序员Python学习路线分享用pprint代替print

[复制链接]
21 0
叶子老师 发表于 昨天 14:48 | 只看该作者 |阅读模式 打印 上一主题 下一主题
好程序员Python培训分享pprint代替print更友好的打印调试信息
pprint 是 “pretty printer” 的简写,“pretty” 的含义是 “漂亮的、美观的”,因此 pprint 的含义便是:漂亮的打印。
这是个相当简单却有用的模块,主要用于打印复杂的数据结构对象,例如多层嵌套的列表、元组和字典等。
先看看 print() 打印的一个例子:
```python
mylist = ["Beautiful is better than ugly.", "Explicit is better than implicit.", "Simple is better than complex.", "Complex is better than complicated."]
print(mylist)
['Beautiful is better than ugly.', 'Explicit is better than implicit.', 'Simple is better than complex.', 'Complex is better than complicated.']
```
这是一个简单的例子,全部打印在一行里。如果对象中的元素是多层嵌套的内容(例如复杂的 字典 数据),再打印出那肯定是一团糟的,不好阅读。
使用 pprint 模块的 pprint() 替代 print(),可以解决如下痛点:
- **设置合适的行宽度,作适当的换行**
- **设置打印的缩进、层级,进行格式化打印**
- **判断对象中是否有无限循环,并优化打印内容**
基本使用
```python
pprint(object, stream=None, indent=1, width=80, depth=None, *,compact=False)
```
默认的行宽度参数为 80,当打印的字符小于 80 时,pprint() 基本上等同于内置函数 print(),当字符超出时,它会作美化,进行格式化输出。
```python
import pprint
mylist = ["Beautiful is better than ugly.", "Explicit is better than implicit.", "Simple is better than complex.", "Complex is better than complicated."]
pprint.pprint(mylist)
# 超出80字符,打印的元素是换行的
['Beautiful is better than ugly.',
'Explicit is better than implicit.',
'Simple is better than complex.',
```
设置缩进
```python
pprint.pprint(mylist, indent=4)
[   'Beautiful is better than ugly.',
    'Explicit is better than implicit.',
    'Simple is better than complex.',
```
设置打印行宽
- ```python
  mydict = {'students': [{'name':'Tom', 'age': 18},{'name':'Jerry', 'age': 19}]}
  
  pprint.pprint(mydict)
  
  # 正常打印
  {'students': [{'age': 18, 'name': 'Tom'}, {'age': 19, 'name': 'Jerry'}]}
  
  pprint.pprint(mydict, width=20)
  
  # 行宽为 20
  {'students': [{'age': 18,
                 'name': 'Tom'},
                {'age': 19,
                 'name': 'Jerry'}]}
  
  pprint.pprint(mydict, width=70)
  
  # 行宽为 70
  {'students': [{'age': 18, 'name': 'Tom'},
                {'age': 19, 'name': 'Jerry'}]}
  ```
设置打印层级
```python
newlist = [1, [2, [3, [4, [5]]]]]
pprint.pprint(newlist, depth=3)
# 超出的层级会用 ... 表示
[1, [2, [3, [...]]]]
```
pprint 替换 print
```python
import pprint
print = pprint.pprint
mylist = ["Beautiful is better than ugly.", "Explicit is better than implicit.", "Simple is better than complex.", "Complex is better than complicated."]
print(mylist)
['Beautiful is better than ugly.',
'Explicit is better than implicit.',
'Simple is better than complex.',
```
更多用法请查看官方文档
总体而言,pprint() print() 的轻量级替代,简单实用,非常方便,而且还是 Python 标准库。
好程序员Python培训官网:http://danleaver.com/python_class.shtml

精彩内容,一键分享给更多人!
收藏
收藏0
转播
转播
分享
淘帖0
支持
支持0
反对
反对0
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启