好程式設計師Python學習路線分享用pprint代替print
阿新 • • 發佈:2019-10-09
好程式設計師Python學習路線分享用pprint代替print更友好的列印除錯資訊
pprint 是 “pretty printer” 的簡寫,“pretty” 的含義是 “漂亮的、美觀的”,因此 pprint 的含義便是:漂亮的列印。
這是個相當簡單卻有用的模組,主要用於列印複雜的資料結構物件,例如多層巢狀的列表、元組和字典等。
先看看 print() 列印的一個例子:
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(),可以解決如下痛點:
- 設定合適的行寬度,作適當的換行
- 設定列印的縮排、層級,進行格式化列印
- 判斷物件中是否有無限迴圈,並優化列印內容
基本使用
pprint(object, stream=None, indent=1, width=80, depth=None, *,compact=False)
預設的行寬度引數為 80,當列印的字元小於 80 時,pprint() 基本上等同於內建函式 print(),當字元超出時,它會作美化,進行格式化輸出。
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.', 'Complex is better than complicated.']
設定縮排
pprint.pprint(mylist, indent=4)
[ 'Beautiful is better than ugly.',
'Explicit is better than implicit.',
'Simple is better than complex.',
'Complex is better than complicated.']
設定列印行寬
-
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'}]}
設定列印層級
newlist = [1, [2, [3, [4, [5]]]]]
pprint.pprint(newlist, depth=3)
# 超出的層級會用 ... 表示
[1, [2, [3, [...]]]]
用 pprint 替換 print
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.',
'Complex is better than complicated.']
更多用法請檢視官方文件
總體而言,pprint() 是 print() 的輕量級替代,簡單實用,非常方便,而且還