色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

揭秘Python的內(nèi)置對(duì)象

汽車玩家 ? 來源:今日頭條 ? 作者:任性的90后boy ? 2020-01-18 17:30 ? 次閱讀

Python 中的sys模塊極為基礎(chǔ)而重要,它主要提供了一些給解釋器使用(或由它維護(hù))的變量,以及一些與解釋器強(qiáng)交互的函數(shù)。

本文將會(huì)頻繁地使用該模塊的getsizeof()方法,因此,我先簡(jiǎn)要介紹一下:

該方法用于獲取一個(gè)對(duì)象的字節(jié)大小(bytes)

它只計(jì)算直接占用的內(nèi)存,而不計(jì)算對(duì)象內(nèi)所引用對(duì)象的內(nèi)存

這里有個(gè)直觀的例子:

上例說明了一件事:一個(gè)靜態(tài)創(chuàng)建的列表,如果只包含兩個(gè)元素,那它自身占用的內(nèi)存就是 80 字節(jié),不管其元素所指向的對(duì)象是什么。

好了,擁有這把測(cè)量工具,我們就來探究一下 Python 的內(nèi)置對(duì)象都藏了哪些小秘密吧。

1、空對(duì)象不是“空”的!

對(duì)于我們熟知的一些空對(duì)象,例如空字符串、空列表、空字典等等,不知道大家是否曾好奇過,是否曾思考過這些問題:

空的對(duì)象是不是不占用內(nèi)存呢?如果占內(nèi)存,那占用多少呢?為什么是這樣分配的呢?

直接上代碼吧,一起來看看幾類基本數(shù)據(jù)結(jié)構(gòu)的空對(duì)象的大小:

可見,雖然都是空對(duì)象,但是這些對(duì)象在內(nèi)存分配上并不為“空”,而且分配得還挺大(記住這幾個(gè)數(shù)字哦,后面會(huì)考)。

排一下序:基礎(chǔ)數(shù)字<空元組 < 空字符串 < 空列表 < 空集合 < 空字典。

這個(gè)小秘密該怎么解釋呢?

因?yàn)檫@些空對(duì)象都是容器,我們可以抽象地理解:它們的一部分內(nèi)存用于創(chuàng)建容器的骨架、記錄容器的信息(如引用計(jì)數(shù)、使用量信息等等)、還有一部分內(nèi)存則是預(yù)分配的。

2、內(nèi)存擴(kuò)充不是均勻的!

空對(duì)象并不為空,一部分原因是 Python 解釋器為它們預(yù)分配了一些初始空間。在不超出初始內(nèi)存的情況下,每次新增元素,就使用已有內(nèi)存,因而避免了再去申請(qǐng)新的內(nèi)存。

那么,如果初始內(nèi)存被分配完之后,新的內(nèi)存是怎么分配的呢?

分別給三類可變對(duì)象添加 26 個(gè)元素,看看結(jié)果如何:

由此能看出可變對(duì)象在擴(kuò)充時(shí)的秘密:

超額分配機(jī)制:申請(qǐng)新內(nèi)存時(shí)并不是按需分配的,而是多分配一些,因此當(dāng)再添加少量元素時(shí),不需要馬上去申請(qǐng)新內(nèi)存

非均勻分配機(jī)制:三類對(duì)象申請(qǐng)新內(nèi)存的頻率是不同的,而同一類對(duì)象每次超額分配的內(nèi)存并不是均勻的,而是逐漸擴(kuò)大的

3、列表不等于列表!

以上的可變對(duì)象在擴(kuò)充時(shí),有相似的分配機(jī)制,在動(dòng)態(tài)擴(kuò)容時(shí)可明顯看出效果。

那么,靜態(tài)創(chuàng)建的對(duì)象是否也有這樣的分配機(jī)制呢?它跟動(dòng)態(tài)擴(kuò)容比,是否有所區(qū)別呢?

先看看集合與字典:

看到這個(gè)結(jié)果,再對(duì)比上一節(jié)的截圖,可以看出:在元素個(gè)數(shù)相等時(shí),靜態(tài)創(chuàng)建的集合/字典所占的內(nèi)存跟動(dòng)態(tài)擴(kuò)容時(shí)完全一樣。

這個(gè)結(jié)論是否適用于列表對(duì)象呢?一起看看:

上一節(jié)的截圖顯示,列表在前 4 個(gè)元素時(shí)都占 96 字節(jié),在 5 個(gè)元素時(shí)占 128 字節(jié),與這里明顯矛盾。

所以,這個(gè)秘密昭然若揭:在元素個(gè)數(shù)相等時(shí),靜態(tài)創(chuàng)建的列表所占的內(nèi)存有可能小于動(dòng)態(tài)擴(kuò)容時(shí)的內(nèi)存!

也就是說,這兩種列表看似相同,實(shí)際卻不同!列表不等于列表!

4、消減元素并不會(huì)釋放內(nèi)存!

前面提到了,擴(kuò)充可變對(duì)象時(shí),可能會(huì)申請(qǐng)新的內(nèi)存。

那么,如果反過來縮減可變對(duì)象,減掉一些元素后,新申請(qǐng)的內(nèi)存是否會(huì)自動(dòng)回收掉呢?

如代碼所示,列表在一擴(kuò)一縮后,雖然回到了原樣,但是所占用的內(nèi)存空間可沒有自動(dòng)釋放啊。其它的可變對(duì)象同理。

這就是 Python 的小秘密了,“胖子無法減重原理”:瘦子變胖容易,縮減身型也容易,但是體重減不掉,哈哈~~~

5、空字典不等于空字典!

使用 pop() 方法,只會(huì)縮減可變對(duì)象中的元素,但并不會(huì)釋放已申請(qǐng)的內(nèi)存空間。

還有個(gè) clear() 方法,它會(huì)清空可變對(duì)象的所有元素,讓我們?cè)囋嚳窗桑?/p>

調(diào)用 clear() 方法,我們就獲得了幾個(gè)空對(duì)象。

在第一小節(jié)里,它們的內(nèi)存大小已經(jīng)被查驗(yàn)過了。(前面說過會(huì)考的,請(qǐng)默寫回看下)

但是,如果這時(shí)再查驗(yàn)的話,你會(huì)驚訝地發(fā)現(xiàn),這些空對(duì)象的大小跟前面查的并不完全一樣!

空列表與空元組的大小不變,然而空字典(72)竟然比前面的空字典(240)要小很多!

也就是說,列表與元組在清空元素后,回到起點(diǎn)不變初心,然而,字典這家伙卻是“賠了夫人又折兵”,不僅把“吃”進(jìn)去的全吐出來了,還把自己的老本給虧掉了!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3019

    瀏覽量

    74003
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    揭秘共模電感漏感對(duì)使用有影響嗎

    電子發(fā)燒友網(wǎng)站提供《揭秘共模電感漏感對(duì)使用有影響嗎.docx》資料免費(fèi)下載
    發(fā)表于 09-30 14:45 ?1次下載

    LDO噪聲揭秘

    電子發(fā)燒友網(wǎng)站提供《LDO噪聲揭秘.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 09:13 ?0次下載
    LDO噪聲<b class='flag-5'>揭秘</b>

    DM368 NAND Flash啟動(dòng)揭秘

    電子發(fā)燒友網(wǎng)站提供《DM368 NAND Flash啟動(dòng)揭秘.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:22 ?0次下載
    DM368 NAND Flash啟動(dòng)<b class='flag-5'>揭秘</b>

    pytorch和python的關(guān)系是什么

    在當(dāng)今的人工智能領(lǐng)域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學(xué)易用、豐富的庫和框架以及強(qiáng)大的社區(qū)支持,使其成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域的首選語言。而在深度學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 08-01 15:27 ?1885次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向對(duì)象的編程語言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡(jiǎn)潔的語法、對(duì)動(dòng)態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python在多個(gè)平臺(tái)
    的頭像 發(fā)表于 07-24 10:41 ?527次閱讀

    揭秘中國汽車芯片市場(chǎng):主要企業(yè)有哪些?

    揭秘中國汽車芯片市場(chǎng):主要企業(yè)有哪些?
    的頭像 發(fā)表于 07-19 10:12 ?564次閱讀
    <b class='flag-5'>揭秘</b>中國汽車芯片市場(chǎng):主要企業(yè)有哪些?

    python訓(xùn)練出的模型怎么調(diào)用

    使用pickle模塊 pickle 是Python的一個(gè)內(nèi)置模塊,用于序列化和反序列化Python對(duì)象結(jié)構(gòu)。使用 pickle 可以方便地保存和加載模型。 import pickle
    的頭像 發(fā)表于 07-11 10:15 ?1872次閱讀

    EMC大揭秘 PCB設(shè)計(jì)必備指南

    EMC大揭秘 PCB設(shè)計(jì)必備指南
    的頭像 發(fā)表于 06-15 16:29 ?3061次閱讀
    EMC大<b class='flag-5'>揭秘</b> PCB設(shè)計(jì)必備指南

    華為云開發(fā)者桌面全新發(fā)布 CodeArts IDE for Python,極致優(yōu)雅云原生開發(fā)體驗(yàn)

    近日,華為云正式發(fā)布 CodeArts IDE for Python,這是一款內(nèi)置華為自研 Python 語言服務(wù),提供智能編程、靈活調(diào)試能力的可擴(kuò)展桌面開發(fā)工具,為華為云開發(fā)者提供卓越
    的頭像 發(fā)表于 05-10 00:27 ?1235次閱讀
    華為云開發(fā)者桌面全新發(fā)布 CodeArts IDE for <b class='flag-5'>Python</b>,極致優(yōu)雅云原生開發(fā)體驗(yàn)

    華為云正式發(fā)布CodeArts IDE for Python

    近日,華為云正式發(fā)布CodeArts IDE for Python,這是一款內(nèi)置華為自主創(chuàng)新的Python語言服務(wù),提供智能編程、靈活調(diào)試能力的可擴(kuò)展桌面開發(fā)工具,為華為云開發(fā)者提供卓越Pyt
    的頭像 發(fā)表于 05-08 14:58 ?490次閱讀

    如何使用Python生成四位隨機(jī)數(shù)字

    為了實(shí)現(xiàn)這些目標(biāo),Python 為我們提供了random() 模塊。random() 是一個(gè)內(nèi)置Python 模塊,用于生成隨機(jī)數(shù)。
    的頭像 發(fā)表于 04-15 12:47 ?650次閱讀

    揭秘共模電感選擇技巧

    電子發(fā)燒友網(wǎng)站提供《揭秘共模電感選擇技巧.docx》資料免費(fèi)下載
    發(fā)表于 03-29 14:36 ?0次下載

    醫(yī)療新革命,磁傳感技術(shù)應(yīng)用細(xì)分揭秘!

    電子發(fā)燒友網(wǎng)站提供《醫(yī)療新革命,磁傳感技術(shù)應(yīng)用細(xì)分揭秘!.pdf》資料免費(fèi)下載
    發(fā)表于 03-05 14:39 ?4次下載

    python中open函數(shù)的用法詳解

    python中open函數(shù)的用法詳解 Python中的open()函數(shù)用于打開文件。它接受文件名和模式作為參數(shù),并返回一個(gè)文件對(duì)象。文件對(duì)象可用于讀取、寫入和管理文件。 open()函
    的頭像 發(fā)表于 01-30 15:31 ?2085次閱讀

    折疊屏手機(jī)的FPC技術(shù)揭秘:它如何影響手機(jī)的重量和性能?

    折疊屏手機(jī)的FPC技術(shù)揭秘:它如何影響手機(jī)的重量和性能?
    的頭像 發(fā)表于 12-27 10:08 ?1081次閱讀
    主站蜘蛛池模板: 99久久蜜臀AV免费看蛮| 国产精品高清在线观看地址| 国产一区二区内射最近更新| 內射XXX韩国在线观看| 亚洲精品久久99蜜芽尤物TV| 桃色窝| 18禁黄久久久AAA片| 国产在线AV一区二区香蕉| 区一区二视频免费观看| 18禁止观看免费私人影院| 韩剧甜性涩爱| 色噜噜色啪在线视频| 99re1久久热在线播放| 久久九九亚洲精品| 亚洲高清国产品国语在线观看| 吃春药后的女教师| 女教师の诱惑| 最新亚洲中文字幕在线观看| 精品久久久久久久国产潘金莲| 午夜aaaa| 国产成人免费a在线视频app| 欧美日韩综合一区| 99RE久久精品国产| 久久伊人在| 一个人看的WWW高清电影| 国内九一激情白浆发布| 小玲被公扒开腿| 国产精品v欧美精品v日韩| 日韩AV成人无码久久精品老人 | www.青青草原| 伦理片在线线249| 中文字幕久久久| 久久国产精品萌白酱免费| 亚洲无线观看国产| 狠狠色狠狠色综合日日2019| 亚洲国产果果在线播放在线| 国产剧情麻豆mv| 亚州AV人片一区二区三区99久| 国产高潮国产高潮久久久久久| 视频区 国产 欧美 日韩| 国产69精品麻豆久久久久|