国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
荥经县| 日照市| 栖霞市| 永州市| 莫力| 逊克县| 兴和县| 云和县| 左云县| 莱西市| 白沙| 无棣县| 称多县| 河南省| 务川| 太康县| 南溪县| 内黄县| 蕉岭县| 永兴县| 济源市| 新建县| 宁国市| 黄石市| 治县。| 婺源县| 双流县| 清苑县| 乌拉特中旗| 崇左市| 桐庐县| 卢氏县| 台山市| 高密市| 南部县| 九寨沟县| 汝阳县| 金溪县| 进贤县| 昌图县| 大石桥市|