亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

009 Python變量內存管理

系統 1780 0

目錄

  • 一、變量存哪了?
  • 二、Python垃圾回收機制
    • 2.1 引用計數
  • 三、小整數池

一、變量存哪了?

          
            x = 10
          
        

變量存放在內存中這句話太寬泛了,我們把它具體化。

對于電腦內存這個大內存,每定義一個變量就會在這個大內存中開辟一個小空間,小空間內存放變量值10,然后內存給這個小空間一個變量名x(門牌號),x指向10。

二、Python垃圾回收機制

對于p1.py,如果我們再加上一段代碼 x = 11 ,大內存會開辟另一個小空間存儲變量值11,把變量值綁定另一個門牌號x,但是由于之前有x,所以大內存會解除x與10的連接,讓x與11連接。這個時候10由于沒有了門牌號,所以成為了python眼中的垃圾,python就會處理這個垃圾,釋放10的內存占用,這就是python的垃圾回收機制。而其他語言需要手動把10的內存占用釋放掉。

2.1 引用計數

從上述的解釋我們可以知道只要某個變量值綁定著門牌號,就不是垃圾,反之變量值沒有綁定著門牌號,這個變量值就是垃圾,python就會自動清理這個垃圾。這里我們對于這個門牌號給定一個專業的解釋,在python中這個門牌號被稱作引用計數。

          
            x = 10  # 10引用計數加1為1
y = x  # 10引用計數加1為2
x = 11  # 10引用計數減1為1;11引用計數加1為1
del y  # 10引用計數減1為0,觸發python垃圾回收機制,python清理10的內存占用
          
        

上述代碼就是一個引用計數加減的過程。

三、小整數池

為了避免因創建相同的值而重復申請內存空間所帶來的效率問題, Python解釋器會在啟動時創建出小整數池,范圍是[-5,256],該范圍內的小整數對象是全局解釋器范圍內被重復使用,永遠不會被垃圾回收機制回收。

          
            # 因此當變量值在【-5:256】這個區間內,只要變量值相同,內存地址都一樣
          
        

在pycharm中運行python程序時,pycharm出于對性能的考慮,會擴大小整數池的范圍,其他的字符串等不可變類型也都包含在內一便采用相同的方式處理了,我們只需要記住這是一種優化機制,至于范圍到底多大,無需細究。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 爆操白虎逼 | 国产精品一区久久 | 香蕉色香蕉在线视频 | 色一区二区 | 一级国产20岁美女毛片 | 九九九九热精品视频 | 国产成人亚洲精品2020 | 一级毛片一级毛片一级级毛片 | 欧美在线视频a | 一区二区三区中文字幕 | 看免费一级片 | 亚洲国内 | 久热最新视频 | 成人免费动作大片黄在线 | 日一日操一操 | 伊人888| 久久精品免视看国产盗摄 | 久久精品一区二区三区四区 | 私人影院在线 | 91热久久免费频精品动漫99 | a一级毛片视频免费看 | 伊人成人在线观看 | 欧美三级aaa | 破处一级片 | 香蕉视频在线观看男女 | 亚洲久久影院 | 久久影院一区二区三区 | 亚洲a视频 | 国产伦人伦偷精品视频 | 亚洲一区二区三区高清网 | 成年女人免费看一级人体片 | 五月婷综合网 | 中文字幕亚洲图片 | 国产成人无精品久久久久国语 | 日本黄 色 成 年 人免费观看 | 手机精品在线 | 免费视频爱爱 | 手机看片久久高清国产日韩 | 琪琪色播 | 午夜在线播放免费高清观看 | 久久精品免视看国产明星 |