最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Fluent Python —— Data Model初探

2023-03-05 23:10 作者:Mor_pheus  | 我要投稿

本系列旨在記錄自己在閱讀Fluent Python一書(shū)過(guò)程中的問(wèn)題和思考。

什么是Data Model?

數(shù)據(jù)模型,其實(shí)是對(duì)Python自身框架的描述,它規(guī)范了這門(mén)語(yǔ)言構(gòu)建自身模塊的接口。

比如構(gòu)建上下文管理器,會(huì)涉及到__enter__和__exit__方法,構(gòu)建一個(gè)可變序列時(shí),

會(huì)涉及到__setitem__,__delitem__,__iadd__等方法。它們一步一步逐層抽象,最后

變成我們更為熟知,同時(shí)使用起來(lái)也更方便的如len()、abs()等方法。

內(nèi)置序列類型概覽

按容納類型:

  • 容器序列

    list、tuple、collections.deque,這些序列能存放不同類型的數(shù)據(jù)。

    容器序列中存放的實(shí)際上是任意類型的引用。

  • 扁平序列

    str、bytes、bytearray、memoryview和array.array等,這些只能容納一種類型。

    扁平序列中存放的是值,其實(shí)它是一片連續(xù)的內(nèi)存空間,因此也就顯得更加緊湊。


按是否可修改:

可變序列不可變序列。顧名思義,不再贅述。

Listcomps & Genexps

這倆可以說(shuō)是非常Pythonic風(fēng)格的“黑魔法”。在日常寫(xiě)代碼的時(shí)候,如果多用列表推導(dǎo)式和

生成器表達(dá)式,那么將會(huì)大大提高代碼的可讀性,并且也能提高運(yùn)行速度。

以下示例摘自Fluent Python:

如果用 listcomps的風(fēng)格,一行代碼搞定!

Genexps的語(yǔ)法和Listcomps的語(yǔ)法很類似,區(qū)別在于一個(gè)是中括號(hào),一個(gè)是小括號(hào)。

但是這二者來(lái)說(shuō),Genexps要更優(yōu)于Listcomps,因?yàn)樯善鞅磉_(dá)式遵循迭代器協(xié)議,

它可以逐個(gè)產(chǎn)出元素,而不是:先建立一個(gè)列表,再將這個(gè)列表傳遞到某個(gè)構(gòu)造函數(shù)里。

顯然,前者更節(jié)省內(nèi)存。

下期,繼續(xù)探究?jī)?nèi)置序列類型——元組

Fluent Python —— Data Model初探的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
玉田县| 汉中市| 株洲县| 金堂县| 乐亭县| 长乐市| 都匀市| 龙岩市| 抚宁县| 彭山县| 西林县| 巴东县| 江都市| 扬州市| 武城县| 调兵山市| 马山县| 视频| 吴江市| 新绛县| 鄂温| 顺义区| 铁岭市| 临邑县| 民县| 晋中市| 海安县| 鄯善县| 祁阳县| 沂水县| 安泽县| 祁连县| 伊川县| 邹平县| 仙居县| 汉川市| 沾益县| 玉龙| 依安县| 万载县| 琼海市|