python 类定义 垃圾_什么是python对象摧毁?python中的对象摧毁(垃圾回收)机制是什么?...
在這篇文章之中我們來了解一下python對象摧毀(垃圾回收),對于剛剛接觸到python這一編程語言的朋友來說,對于python對象摧毀(垃圾回收)的了解應該比較少,并且不清楚關于python垃圾回收這一方面的知識。不過沒關系,在接下來的文章之中我們就來了解一下python對象摧毀(垃圾回收)方面的知識,以及python中的垃圾回收機制。
python對象摧毀(垃圾回收)
Python 使用了引用計數這一簡單技術來跟蹤和回收垃圾。
在 Python 內部記錄著所有使用中的對象各有多少引用。
一個內部跟蹤變量,稱為一個引用計數器。
當對象被創建時, 就創建了一個引用計數, 當這個對象不再需要時, 也就是說, 這個對象的引用計數變為0 時, 它被垃圾回收。但是回收不是"立即"的, 由解釋器在適當的時機,將垃圾對象占用的內存空間回收。a = 40 # 創建對象 <40>
b = a # 增加引用, <40> 的計數
c = [b] # 增加引用. <40> 的計數
del a # 減少引用 <40> 的計數
b = 100 # 減少引用 <40> 的計數
c[0] = -1 # 減少引用 <40> 的計數
垃圾回收機制不僅針對引用計數為0的對象,同樣也可以處理循環引用的情況。循環引用指的是,兩個對象相互引用,但是沒有其他變量引用他們。
這種情況下,僅使用引用計數是不夠的。Python 的垃圾收集器實際上是一個引用計數器和一個循環垃圾收集器。作為引用計數的補充, 垃圾收集器也會留心被分配的總量很大(及未通過引用計數銷毀的那些)的對象。 在這種情況下, 解釋器會暫停下來, 試圖清理所有未引用的循環。
實例分析
析構函數 __del__ ,__del__在對象銷毀的時候被調用,當對象不再被使用時,__del__方法運行:# !/usr/bin/python
# -*- coding: UTF-8 -*-
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print class_name, "銷毀"
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) # 打印對象的id
del pt1
del pt2
del pt3
以上實例運行結果如下:3083401324 3083401324 3083401324Point 銷毀
(注意:通常你需要在單獨的文件中定義一個類,)
以上就是本篇文章所講述的所有內容,這篇文章主要介紹了python對象摧毀(垃圾回收)方面的知識。希望你能借助資料從而理解上述所說的內容以及所舉的實例。希望我在這片文章所講述的內容能夠對你有所幫助,讓你學習python更加輕松。
更多相關知識,請訪問php中文網Python教程欄目。
總結
以上是生活随笔為你收集整理的python 类定义 垃圾_什么是python对象摧毁?python中的对象摧毁(垃圾回收)机制是什么?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python教程简书_Python快速教
- 下一篇: python第四章单元测试_智慧树APP