中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎么打印Python對象-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),醴陵企業(yè)網(wǎng)站建設(shè),醴陵品牌網(wǎng)站建設(shè),網(wǎng)站定制,醴陵網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,醴陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

pprint 是“pretty printer”的簡寫,“pretty”的含義是“漂亮的、美觀的”,還有表示“相當(dāng)?shù)亍钡某潭日Z氣,因此它的含義便是:(相當(dāng))美觀的打印。

這是個(gè)相當(dāng)簡單卻有用的模塊,主要用于打印復(fù)雜的數(shù)據(jù)結(jié)構(gòu)對象,例如多層嵌套的列表、元組和字典等。

先看看 print() 打印的一個(gè)例子:

mylist = ["Beautiful is better than ugly.", "Explicit is better than implicit.", "Simple is better than complex.", "Complex is better than complicated."]
print(mylist)
# 結(jié)果如下:
['Beautiful is better than ugly.', 'Explicit is better than implicit.', 'Simple is better than complex.', 'Complex is better than complicated.']

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

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

那肯定是一團(tuán)糟的,不好閱讀!

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

  • 設(shè)置合適的行寬度,作適當(dāng)?shù)膿Q行

  • 設(shè)置打印的縮進(jìn)、層級,進(jìn)行格式化打印

  • 判斷對象中是否有無限循環(huán),并優(yōu)化打印內(nèi)容

1、簡單使用

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

默認(rèn)的行寬度參數(shù)為 80,當(dāng)打印的字符(character)小于 80 時(shí),pprint() 基本上等同于內(nèi)置函數(shù) print(),當(dāng)字符超出時(shí),它會(huì)作美化,進(jìn)行格式化輸出:

import pprint
# 打印上例的 mylist
pprint.pprint(mylist)
# 打印的元素是換行的(因?yàn)槌?0字符):
['Beautiful is better than ugly.',
 'Explicit is better than implicit.',
 'Simple is better than complex.',
 'Complex is better than complicated.']

2、設(shè)置縮進(jìn)為 4 個(gè)空格(默認(rèn)為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、設(shè)置打印的行寬

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、設(shè)置打印的層級(默認(rèn)全打?。?/p>

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

5、優(yōu)化循環(huán)結(jié)構(gòu)的打印

當(dāng)列表或其它數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)循環(huán)引用時(shí),要完整打印出所有內(nèi)容是不可能的。

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

這種處理方式是簡化了,但沒有指出是誰導(dǎo)致了循環(huán),還容易看漏。

pprint() 方法作了改進(jìn),遇到無限循環(huán)結(jié)構(gòu)時(shí),會(huì)表示成<Recursion on typename with id=number> 的格式。

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

newlist = [1, 2]
newlist.insert(0, newlist)
# 列表元素指向列表自身,造成循環(huán)引用
# 直接 print 的結(jié)果是:[[...], 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、判斷是否出現(xiàn)循環(huán)結(jié)構(gòu)

有兩個(gè)方法判斷一個(gè)對象中是否出現(xiàn)無限循環(huán):

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

isreadable() 除了能像 isrecursive() 一樣判斷循環(huán),還能判斷該格式化內(nèi)容是否可被 eval() 重構(gòu)。

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

最后,還有個(gè)小小的點(diǎn):

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

在不考慮 print() 函數(shù)本身的參數(shù)的情況下,可以在引入 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對象”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前題目:怎么打印Python對象-創(chuàng)新互聯(lián)
鏈接分享:http://m.rwnh.cn/article48/cejcep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名靜態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、建站公司、搜索引擎優(yōu)化、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
北川| 福州市| 张北县| 砀山县| 大关县| 工布江达县| 交城县| 咸宁市| 从化市| 吴堡县| 渝中区| 永胜县| 喀什市| 南皮县| 台南市| 中方县| 英山县| 通渭县| 忻州市| 沙洋县| 武城县| 于都县| 龙岩市| 陵水| 长治市| 泾源县| 贵溪市| 石渠县| 大连市| 航空| 灯塔市| 四川省| 富顺县| 镇江市| 包头市| 余干县| 双辽市| 梧州市| 铜梁县| 东光县| 石首市|