国产精品天干天干,亚洲毛片在线,日韩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ó)家法律
呼和浩特市| 旬阳县| 固始县| 万盛区| 静宁县| 山阴县| 诸城市| 永丰县| 岑巩县| 赣榆县| 合川市| 安宁市| 沙雅县| 徐汇区| 泸溪县| 徐水县| 铜陵市| 普安县| 乌审旗| 华容县| 定结县| 卢龙县| 金寨县| 汝南县| 娄烦县| 平定县| 武乡县| 色达县| 滦南县| 双柏县| 遂昌县| 拜泉县| 新竹市| 临泽县| 北海市| 花莲县| 进贤县| 崇州市| 曲沃县| 巧家县| 双辽市|