Python基礎(chǔ):格式化輸出
哈嘍,大家好,我是了不起。
在平時(shí)使用python編寫(xiě)代碼時(shí),控制臺(tái)打印結(jié)果變量是必不可少的,而且很多初學(xué)者都會(huì)很頻繁的使用python自帶的print()方法在代碼中打樁,以判斷自己的代碼邏輯獲取值是正確的。
但是在代碼中如果需要打印的字段中的數(shù)值非常多的時(shí)候,使用print()打印的話(huà)就會(huì)顯得很凌亂,比如下面這種場(chǎng)景。
data = [{"first": "第一個(gè)值", "second": "第二個(gè)值", "third": "第三個(gè)值", "fourth": "第四個(gè)值", "fifth": "第五個(gè)值", },
{"first": [1, 2, 2, 3, 66, 765], "second": {"first":"1","second":"2","third":"3",}, "third": {"first":"1","second":"2","third":"3",}, "fourth": [1,2,3,4,5,], "fifth": ["frist",{"second":{"1":2,"2":"3"}}]}]
定義一個(gè)data變量賦值了一個(gè)典型的多維列表,然后每個(gè)字典中有多個(gè)鍵值對(duì),這個(gè)時(shí)候使用print()方法打?。?/p>
>>> print(data)
#輸出結(jié)果為
>>> [{'first': '第一個(gè)值', 'second': '第二個(gè)值', 'third': '第三個(gè)值', 'fourth': '第四個(gè)值', 'fifth': '第五個(gè)值'}, {'first': [1, 2, 2, 3, 66, 765], 'second': {'first': '1', 'second': '2', 'third': '3'}, 'third': {'first': '1', 'second': '2', 'third': '3'}, 'fourth': [1, 2, 3, 4, 5], 'fifth': ['frist', {'second': {'1': 2, '2': '3'}}]}]
使用print()打出來(lái)的結(jié)果直接會(huì)顯示成為一條并且看起來(lái)會(huì)很凌亂,而且在pycharm工具中會(huì)顯示成很長(zhǎng)的一條數(shù)據(jù),如果這個(gè)字典中的多維層級(jí)在多一些,我們想要取某一個(gè)關(guān)鍵值的就會(huì)很麻煩。
接下來(lái)給大家介紹兩個(gè)其他的打印方法,分別為pprint和ic。
一、pprint
pprint(pretty-print)是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,可以將 Python 對(duì)象以一種可讀性更高的格式打印出來(lái)。比起print()函數(shù)可以更好的處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如嵌套的列表、字典等。這里還是以上方的data變量為例,首先使用from pprint import pprint導(dǎo)入pprint,然后使用pprint()方法打印出來(lái)的結(jié)果如下。
>>> pprint(data)
#輸出結(jié)果為
>>> [{'fifth': '第五個(gè)值',
'first': '第一個(gè)值',
'fourth': '第四個(gè)值',
'second': '第二個(gè)值',
'third': '第三個(gè)值'},
{'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
可以清晰的看見(jiàn),pprint()將打印的結(jié)果做了一個(gè)格式化的操作,將列表中每個(gè)字典鍵值進(jìn)行分行顯示,使字典的結(jié)構(gòu)顯示更加清晰,提高了可閱讀性。
同時(shí)pprint()還有一些高級(jí)用法,我們可以定義打印數(shù)據(jù)的縮進(jìn)、設(shè)置輸出寬度等。
1.設(shè)置縮進(jìn)
pprint()方法中有一個(gè)設(shè)置縮進(jìn)的indent參數(shù),如果想要每個(gè)層級(jí)之間縮進(jìn)2個(gè)空格,則設(shè)置indent=2即可,示例如下
>>> pprint(data,indent=2)
#輸出結(jié)果為
>>> [ { 'fifth': '第五個(gè)值',
'first': '第一個(gè)值',
'fourth': '第四個(gè)值',
'second': '第二個(gè)值',
'third': '第三個(gè)值'},
{ 'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
可以看見(jiàn)設(shè)置indent=2之后,pprint()將打印出的數(shù)據(jù)每個(gè)層級(jí)之間都縮進(jìn)2個(gè)空格,這樣在平時(shí)打印工作中合理設(shè)置一個(gè)縮進(jìn)空格可以更加直觀的閱讀每個(gè)層級(jí)。
2.設(shè)置寬度
pprint ()默認(rèn)的輸出寬度為 80 個(gè)字符,可以通過(guò)設(shè)置 width 參數(shù)來(lái)更改輸出寬度。示例如下:
>>> pprint(data,width=40)
#輸出結(jié)果為
>>> [{'fifth': '第五個(gè)值',
'first': '第一個(gè)值',
'fourth': '第四個(gè)值',
'second': '第二個(gè)值',
'third': '第三個(gè)值'},
{'fifth': ['frist',
{'second': {'1': 2,
'2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1',
'second': '2',
'third': '3'},
'third': {'first': '1',
'second': '2',
'third': '3'}}]
設(shè)置輸出寬度后可以看到pprint()將打印的數(shù)據(jù)中每一個(gè)字典的鍵值都分行顯示了。
二、ic
ic模塊取之于icecream庫(kù),它是一個(gè)python第三方庫(kù),在使用去需要下載icecream庫(kù)并導(dǎo)入:
#pip安裝icecream庫(kù)
pip install icecream
#導(dǎo)入ic模塊
from icecream import ic
使用ic()方法打印對(duì)象數(shù)據(jù)時(shí),它也是可以將數(shù)據(jù)進(jìn)行格式化后打印出來(lái)最終的結(jié)果,數(shù)據(jù)格式化這一點(diǎn)和pprint()基本是相同的:
>>> ic(data)
#輸出結(jié)果為
>>> ic| data: [{'fifth': '第五個(gè)值',
'first': '第一個(gè)值',
'fourth': '第四個(gè)值',
'second': '第二個(gè)值',
'third': '第三個(gè)值'},
{'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
通過(guò)使用ic()方法輸出后,不僅可以看到格式話(huà)的數(shù)據(jù),并且它還自動(dòng)將你輸出的變量也顯示了出來(lái),這樣也可以延伸到輸出函數(shù)返回的值,具體如下:
#隨意定義一個(gè)函數(shù)
def func(one_data):
return one_data + 1
#給函數(shù)傳入一個(gè)值為3,并打印函數(shù)返回值
>>> ic(func(3))
#得到打印的結(jié)果
>>> ic| func(3): 4
這樣把輸出的函數(shù)和我們傳入的值也自動(dòng)顯示出來(lái)了。
同時(shí),以pycharm為例,使用ic()輸出值后,在控制臺(tái)會(huì)自動(dòng)將你輸出的值轉(zhuǎn)變顏色,可以更加直觀的看到輸出的內(nèi)容。