中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么打印Python對象

發布時間:2021-11-20 15:27:27 來源:億速云 閱讀:295 作者:iii 欄目:編程語言

本篇內容主要講解“怎么打印Python對象”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么打印Python對象”吧!

pprint 是“pretty printer”的簡寫,“pretty”的含義是“漂亮的、美觀的”,還有表示“相當地”的程度語氣,因此它的含義便是:(相當)美觀的打印。

這是個相當簡單卻有用的模塊,主要用于打印復雜的數據結構對象,例如多層嵌套的列表、元組和字典等。

先看看 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.']

這是一個簡單的例子,全部打印在一行里。

想象一下,如果對象中的元素是多層嵌套的內容(例如復雜的 Json 數據),或者有超多的元素(例如在列表中存了很多 URL 鏈接),再打印出來會是怎樣?

那肯定是一團糟的,不好閱讀!

使用 pprint 模塊的 pprint() 替代 print(),可以解決如下痛點:

  • 設置合適的行寬度,作適當的換行

  • 設置打印的縮進、層級,進行格式化打印

  • 判斷對象中是否有無限循環,并優化打印內容

1、簡單使用

語法:pprint(object, stream=None, indent=1, width=80, depth=None, *,compact=False)

默認的行寬度參數為 80,當打印的字符(character)小于 80 時,pprint() 基本上等同于內置函數 print(),當字符超出時,它會作美化,進行格式化輸出:

import pprint
# 打印上例的 mylist
pprint.pprint(mylist)
# 打印的元素是換行的(因為超出80字符):
['Beautiful is better than ugly.',
 'Explicit is better than implicit.',
 'Simple is better than complex.',
 'Complex is better than complicated.']

2、設置縮進為 4 個空格(默認為1)

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.']

3、設置打印的行寬

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)
# 超長1:
{'students': [{'age': 18,
 'name': 'Tom'},
 {'age': 19,
 'name': 'Jerry'}]}
pprint.pprint(mydict, width=70)
# 超長2:
{'students': [{'age': 18, 'name': 'Tom'},
 {'age': 19, 'name': 'Jerry'}]}

4、設置打印的層級(默認全打印)

newlist = [1, [2, [3, [4, [5]]]]]
pprint.pprint(newlist, depth=3)
# 超出的層級會用...表示
[1, [2, [3, [...]]]]

5、優化循環結構的打印

當列表或其它數據結構中出現循環引用時,要完整打印出所有內容是不可能的。

所以 print 作了簡化處理,就像上例一樣,只打印外層的殼,而不打印內層循環的東西。

這種處理方式是簡化了,但沒有指出是誰導致了循環,還容易看漏。

pprint() 方法作了改進,遇到無限循環結構時,會表示成<Recursion on typename with id=number> 的格式。

還有個 saferepr() 方法,也是這樣優化,而且返回的是個字符串:

newlist = [1, 2]
newlist.insert(0, newlist)
# 列表元素指向列表自身,造成循環引用
# 直接 print 的結果是:[[...], 1, 2]
pprint.pprint(newlist)
# [<Recursion on list with id=1741283656456>, 1, 2]
pprint.saferepr(newlist)
# '[<Recursion on list with id=1741283656456>, 1, 2]'

6、判斷是否出現循環結構

有兩個方法判斷一個對象中是否出現無限循環:

pprint.isrecursive(newlist)
# True
pprint.isreadable(newlist)
# False

isreadable() 除了能像 isrecursive() 一樣判斷循環,還能判斷該格式化內容是否可被 eval() 重構。

以上就是 pprint 模塊的快捷入門介紹,除此之外,還有 pformat() 方法、PrettyPrinter 類,以及某些參數的使用等內容,我覺得沒有大用,就不多說了。

最后,還有個小小的點:

用 pprint() 替換 print() 的技巧

在不考慮 print() 函數本身的參數的情況下,可以在引入 pprint 模塊后,寫上 “print = pprint.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.']

到此,相信大家對“怎么打印Python對象”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巧家县| 彭泽县| 北宁市| 阳东县| 措美县| 谢通门县| 陆河县| 盐城市| 离岛区| 南江县| 东阿县| 青龙| 缙云县| 合阳县| 鄱阳县| 越西县| 扬中市| 开平市| 丰原市| 西青区| 石狮市| 姜堰市| 尉氏县| 嘉祥县| 沾益县| 青神县| 东明县| 包头市| 靖江市| 日土县| 宝兴县| 曲阜市| 托克托县| 城口县| 高州市| 大同县| 湛江市| 博爱县| 伽师县| 浦东新区| 凤翔县|