python小特性:is和==、python垃圾回收機制、變量的內存管理、小整數池

一、is和"=="

  • is比較的是內存地址的大小是否相等
  • ==表示的是值(或者說內容是否相等)
  • id()函數,可以獲取內存地址

不論什麼數據類型這兩個都是這樣子的。

二、python垃圾回收機制簡單介紹

引用計數:內存中的值被引用的次數,當計數爲0時,該變量值就成爲了垃圾,就會被回收。
下述情況計數會加1:
對象被創建  a=14
對象被引用  b=a
對象被作爲參數,傳到函數中   func(a)
對象作爲一個元素,存儲在容器(比如數組、列表、元組)中   List={a,“a”,“b”,2}

與上述情況相對應,當發生以下四種情況時,計數器-1
當該對象的別名被顯式銷燬時  del a
當該對象的引別名被賦予新的對象   a=26
一個對象離開它的作用域,例如 func函數執行完畢時,函數裏面的局部變量的引用計數器就會減一(但是全局變量不會
將該元素從容器中刪除時,或者容器被銷燬時。

三、變量內存管理

變量名其實存儲的是一個變量值所在的物理內存地址

a = 'info: egon: 18'
b = 'info: egon: 18'
print(a is b)

在這裏插入圖片描述
像上面這樣子分別設置的變量,並不是指向同一個內存地址,無論變量值是否相等,都會開闢新的地址空間存儲。

a = 'info: egon: 18'
b = a
print(a is b)

在這裏插入圖片描述這個相當於賦值的是內存地址,所以並沒有開闢新的地址空間

四、小整數池

在這裏插入圖片描述
請問爲什麼這個的內存地址又是相等的呢?

像一些小整數,使用比較頻繁,python就在python解釋器啓動之後,馬上創建了一塊內存空間專門存儲[-5,256]的小整數,避免執行程序時,會創建很多重複的小整數空間。
在這裏插入圖片描述

五、python自帶和pycharm

python自帶:
在這裏插入圖片描述pycharm:
在這裏插入圖片描述大家都認爲pycharm和python自帶的這個沒有什麼區別,只是界面更美觀了而已。
其實不然。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章