打印,是全部程序員從小白時期就具有的神技,遇事不決打印一下,是 DEBUG 最簡單且不依賴 IDE 的方式,自定義各類日誌輸出,也是項目成型後必備功能。
可是爲了優雅的打印格式,每每須要對各類對象進行特殊格式化,可遇到字典和大段字符串也很差處理。
這篇文章介紹兩個庫模塊,能夠快速有效的解決全部 Python 對象的打印輸出,沒錯,全部。
這是 Python 標準庫模塊,全稱 pretty printer,可讓各類數據結構更美觀地輸出。html
pprint.pprint
(object, stream=None, indent=1, width=80, depth=None, *, compact=False)python
pprint.pformat
(object, indent=1, width=80, depth=None, *, compact=False)git
和 pprint.pprint
的區別是,該函數不會打印到輸出流,而是返回一個格式化字符串。程序員
classpprint.PrettyPrinter
(indent=1, width=80, depth=None, stream=None, *, compact=False)github
上文兩個函數,實際都是構建一個 PrettyPrinter
對象,並調用對應的方法,因此當須要複用格式化的時候,咱們能夠提早構建該對象。web
更多用法能夠參考官方文檔:編程
8.11. pprint - Data pretty printer - Python 3.5.6 documentationdocs.python.org微信
pprint
對字典 列表這類數據結構確實很好用,但遇到類、字符串仍然和 print 差異不大,所以這裏有一個國人寫的第三方庫介紹給你們。數據結構
除了和 pprint 同樣支持 dict, list, tuple 等常規變量的格式化輸出,還支持 object 變量打印、長文本自動剪切。app
下面是做者 README 中和 pprint 的對比:
pprint:
beeprint:
pprint:
beeprint:
pprint:
beeprint:
pprint:
beeprint:
beeprint.pp
(o, output=True, max_depth=5, indent=2, width=80, sort_keys=True, config=None, **kwargs):
參數和 pprint 相似,多出了 sort_keys能夠打印字典時是否按 key 排序( pprint 是默認排序,不可選),另外還有控制文本裁剪等行爲的參數,能夠從 beeprint.Config
裏查看。
該庫的 Github:https://github.com/panyanyany/beeprint
微信公衆號:面向人生編程
編程思惟不該只存留在代碼之中,更應伴隨於整我的生旅途,這個公衆號不僅聊技術,還會聊產品/互聯網/經濟學等普遍話題,因此也歡迎非程序員關注。