亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中垃圾回收和del語句詳解

發布時間:2020-10-16 08:34:29 來源:腳本之家 閱讀:133 作者:Polar Snow Documenta 欄目:開發技術

Python中的垃圾回收算法是采用引用計數, 當一個對象的引用計數為0時, Python的垃圾回收機制就會將對象回收

a = "larry"
b = a

larry這個字符串對象, 在第一行被貼了a標簽后, 引用計數為1, 之后在第二行, 由貼上了b標簽, 此時, 該字符串對象的引用計數為

a = "larry"
b = a
del a

注意: 在Python語言中, del語句操作某個對象的時候, 并不是直接將該對象在內存中刪除, 而是將該對象的引用計數-1

>>> a = "larry"
>>> b = a
>>> del a
>>> id(b)
4572141808
>>> id(a)
Traceback (most recent call last):
 File "<input>", line 1, in <module>
  id(a)
NameError: name 'a' is not defined

從以上示例中可以看出, larry這個字符串對象在第一行被貼上了a標簽, 此時字符串對象的引用計數為1, 接著第二行又被貼上了b標簽, 此時該字符串對象的引用計數為2, 在第三行中, del語言刪除了a變量(標簽), 在后續的print中可以看出, 內存中實際的字符串對象并沒有被刪除, del語言只是刪除了一個變量對該字符串對象的引用, 所以對于larry這個字符串對象來說, 效果只是引用計數-1

魔法函數之__del__

類中的__del__魔法函數, 支持我們自定義清理對象的邏輯, 當Python解釋器使用del語言刪除類的對象的時候, 會自動調用類中的__del__函數, 我們可以對其進行重載

>>> class Ref:
...
...   def __init__(self, name):
...     self.name = name
...
...   def __del__(self):
...     print("刪除對象")
...     del self.name
...
>>>
>>> r = Ref(name="larry")
>>> print(r.name)
larry
>>>
>>> del r

刪除對象

>>>
>>> print(r.name)
Traceback (most recent call last):
 File "<input>", line 1, in <module>
  print(r.name)
NameError: name 'r' is not defined

我們可以通過重載__del__魔法函數, 自己靈活控制在del 對象的時候執行哪些善后操作

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澳门| 鄂温| 甘洛县| 武清区| 富裕县| 汾西县| 平山县| 吉木萨尔县| 贵德县| 邓州市| 敖汉旗| 娱乐| 福贡县| 沅陵县| 和静县| 乐平市| 龙里县| 高密市| 霍邱县| 阳信县| 瑞丽市| 甘泉县| 青龙| 托克逊县| 乌兰浩特市| 禹城市| 湘乡市| 平阴县| 仪征市| 扬州市| 房产| 宣汉县| 高州市| 潼南县| 中牟县| 涿鹿县| 子长县| 南昌市| 禄丰县| 建昌县| 资阳市|