Python中的變量與垃圾回收機制

python1226.png

Python與Java的變量本質上不一樣,Python的變量本事是個指針。當Python解釋器執行number=1的時候,實際上先在內存中創建一個int對象,然后將number指向這個int對象的內存地址,也就是將number“貼”在int對象上,測試用例如下:

1 number = [1, 2, 3]
2 demo = number
3 demo.append(4)
4 print(number)
5 # [1, 2, 3, 4]

==和is的區別就是前者判斷的值是否相等,后者判斷的是對象id值是否相等。

 1 class Person(object):
 2     pass
 3 
 4 p_0 = Person()
 5 
 6 p_1 = Person()
 7 
 8 print(p_0 is p_1) # False
 9 print(p_0 == p_1) # False
10 print(id(p_0))    # 2972754016464
11 print(id(p_1))    # 2972754016408
12 
13 li_a = [1, 2, 3, 4]
14 li_b = [1, 2, 3, 4]
15 
16 print(li_a is li_b) # False
17 print(li_a == li_b) # True
18 print(id(li_a))     # 2972770077064
19 print(id(li_b))     # 2972769996680
20 
21 a = 1
22 b = 1
23 
24 print(a is b)  # True
25 print(a == b)  # True
26 print(id(a))   # 1842179136
27 print(id(b))   # 1842179136

Python有一個優化機制叫intern,像這種經常使用的小整數、小字符串,在運行時就會創建,并且全局唯一。
Python中的del語句并不等同于C++中的delete,Python中的del是將這個對象的指向刪除,當這個對象沒有任何指向的時候,Python虛擬機才會刪除這個對象。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,833評論 0 27
  • 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學習Python基礎知識的框架詳細梳理了一遍。 ...
    Raxxie閱讀 19,029評論 17 410
  • 一、Python簡介和環境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,803評論 0 10
  • 彼此一路見證著 對方不完美的成長 在過去的很長一段時間里 我甚至迷失了自己 我想 你我曾并肩那么久 我見證著青澀的...
    莊周大叔閱讀 188評論 0 0
  • 文/月中山 春天到了,田邊一排排粗壯的香椿樹也發芽了,嫩綠的枝芽朝著天空,在微風中搖曳散發出陣陣清香。 春上的農家...
    月中山閱讀 569評論 5 8