本篇內(nèi)容主要講解“python namedtuple的作用是什么及怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python namedtuple的作用是什么及怎么用”吧!
勐臘ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
點(diǎn)評(píng):Python標(biāo)準(zhǔn)庫的
collections
模塊提供了很多有用的數(shù)據(jù)結(jié)構(gòu),這些內(nèi)容并不是每個(gè)開發(fā)者都清楚,就比如題目問到的namedtuple
,在我參加過的面試中,90%的面試者都不能準(zhǔn)確的說出它的作用和應(yīng)用場(chǎng)景。此外,deque
也是一個(gè)非常有用但又經(jīng)常被忽視的類,還有Counter
、OrderedDict
、defaultdict
、UserDict
等類,大家清楚它們的用法嗎?
在使用面向?qū)ο缶幊陶Z言的時(shí)候,定義類是最常見的一件事情,有的時(shí)候,我們會(huì)用到只有屬性沒有方法的類,這種類的對(duì)象通常只用于組織數(shù)據(jù),并不能接收消息,所以我們把這種類稱為數(shù)據(jù)類或者退化的類,就像C語言中的結(jié)構(gòu)體那樣。我們并不建議使用這種退化的類,在Python中可以用namedtuple
(命名元組)來替代這種類。
from collections import namedtuple Card = namedtuple('Card', ('suite', 'face')) card1 = Card('紅桃', 13) card2 = Card('草花', 5) print(f'{card1.suite}{card1.face}') print(f'{card2.suite}{card2.face}')
命名元組與普通元組一樣是不可變?nèi)萜?,一旦將?shù)據(jù)存儲(chǔ)在namedtuple
的頂層屬性中,數(shù)據(jù)就不能再修改了,也就意味著對(duì)象上的所有屬性都遵循“一次寫入,多次讀取”的原則。和普通元組不同的是,命名元組中的數(shù)據(jù)有訪問名稱,可以通過名稱而不是索引來獲取保存的數(shù)據(jù),不僅在操作上更加簡(jiǎn)單,代碼的可讀性也會(huì)更好。
命名元組的本質(zhì)就是一個(gè)類,所以它還可以作為父類創(chuàng)建子類。除此之外,命名元組內(nèi)置了一系列的方法,例如,可以通過_asdict
方法將命名元組處理成字典,也可以通過_replace
方法創(chuàng)建命名元組對(duì)象的淺拷貝。
class MyCard(Card): def show(self): faces = ['', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] return f'{self.suite}{faces[self.face]}' print(Card) #card3 = MyCard('方塊', 12) print(card3.show()) # 方塊Q print(dict(card1._asdict())) # {'suite': '紅桃', 'face': 13} print(card2._replace(suite='方塊')) # Card(suite='方塊', face=5)
總而言之,命名元組能更好的組織數(shù)據(jù)結(jié)構(gòu),讓代碼更加清晰和可讀,在很多場(chǎng)景下是元組、字典和數(shù)據(jù)類的替代品。在需要?jiǎng)?chuàng)建占用空間更少的不可變類時(shí),命名元組就是很好的選擇。
到此,相信大家對(duì)“python namedtuple的作用是什么及怎么用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!