pythonnamedtuple的作用是什么及怎么用

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

勐臘ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

點(diǎn)評:Python標(biāo)準(zhǔn)庫的collections模塊提供了很多有用的數(shù)據(jù)結(jié)構(gòu),這些內(nèi)容并不是每個(gè)開發(fā)者都清楚,就比如題目問到的namedtuple,在我參加過的面試中,90%的面試者都不能準(zhǔn)確的說出它的作用和應(yīng)用場景。此外,deque也是一個(gè)非常有用但又經(jīng)常被忽視的類,還有Counter、OrderedDict 、defaultdict 、UserDict等類,大家清楚它們的用法嗎?

在使用面向?qū)ο缶幊陶Z言的時(shí)候,定義類是最常見的一件事情,有的時(shí)候,我們會(huì)用到只有屬性沒有方法的類,這種類的對象通常只用于組織數(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ù)存儲在namedtuple的頂層屬性中,數(shù)據(jù)就不能再修改了,也就意味著對象上的所有屬性都遵循“一次寫入,多次讀取”的原則。和普通元組不同的是,命名元組中的數(shù)據(jù)有訪問名稱,可以通過名稱而不是索引來獲取保存的數(shù)據(jù),不僅在操作上更加簡單,代碼的可讀性也會(huì)更好。

命名元組的本質(zhì)就是一個(gè)類,所以它還可以作為父類創(chuàng)建子類。除此之外,命名元組內(nèi)置了一系列的方法,例如,可以通過_asdict方法將命名元組處理成字典,也可以通過_replace方法創(chuàng)建命名元組對象的淺拷貝。

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)    # <class '__main__.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),讓代碼更加清晰和可讀,在很多場景下是元組、字典和數(shù)據(jù)類的替代品。在需要?jiǎng)?chuàng)建占用空間更少的不可變類時(shí),命名元組就是很好的選擇。

到此,相信大家對“python namedtuple的作用是什么及怎么用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文標(biāo)題:pythonnamedtuple的作用是什么及怎么用
轉(zhuǎn)載來源:http://muchs.cn/article36/gedhpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、網(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)

手機(jī)網(wǎng)站建設(shè)