Python
中函数算是 function
的实例, 而类算是 type
的实例, 那么函数和类的生命周期是怎样的呢 ?
In [1]: def func():
...: pass
...:
In [2]: type(func)
Out[2]: function
In [3]: class Test(object):
...: pass
...:
In [4]: type(Test)
Out[4]: type
是被创建后就一直存活到程序运行结束还是按引用计数来算的 ?
如果是按引用计数来计算, 那么函数和类的引用计数是怎样计算的呢 ?
当然还是引用计数了啊,计数不归零就不会被回收了。函数算是
function
的实例, 类算是type
的实例。把def func()
理解成func = new Function()
,此时该函数实例计数是 1 ,如果此时删除其引用del func
或者给func
赋值其他值,致使函数对象引用计数为0,那它就被回收了,同理的class Test(object)
视为Test = new type()
,它的引用计数同一般普通的变量计算方式一样,没什么特别的。所以只要引用计数不为 0,那它的生命周期就是整个程序的生命周期。这点上,模块中为了不暴露给用户私密的函数或类,都会在文末进行 del 操作,例如标准库中
datetime.py
中的文末: