在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ Python中函數(shù)和類的生命周期是怎樣的 ?

Python中函數(shù)和類的生命周期是怎樣的 ?

Python 中函數(shù)算是 function 的實例, 而類算是 type 的實例, 那么函數(shù)和類的生命周期是怎樣的呢 ?

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

是被創(chuàng)建后就一直存活到程序運行結(jié)束還是按引用計數(shù)來算的 ?

如果是按引用計數(shù)來計算, 那么函數(shù)和類的引用計數(shù)是怎樣計算的呢 ?

回答
編輯回答
寫榮

當然還是引用計數(shù)了啊,計數(shù)不歸零就不會被回收了。函數(shù)算是 function 的實例, 類算是 type 的實例。把 def func() 理解成 func = new Function() ,此時該函數(shù)實例計數(shù)是 1 ,如果此時刪除其引用 del func 或者給 func 賦值其他值,致使函數(shù)對象引用計數(shù)為0,那它就被回收了,同理的 class Test(object) 視為 Test = new type() ,它的引用計數(shù)同一般普通的變量計算方式一樣,沒什么特別的。所以只要引用計數(shù)不為 0,那它的生命周期就是整個程序的生命周期。

這點上,模塊中為了不暴露給用戶私密的函數(shù)或類,都會在文末進行 del 操作,例如標準庫中 datetime.py 中的文末:

圖片描述

2017年9月17日 02:17
編輯回答
陌離殤

那要看你在哪里定義咯

如果你定義的全局的,那就是整個程序的生命周期;而如果在 if for 等子塊中定義那就在該子塊局部作用域有效,除非被其他作用域引用

2018年2月18日 16:32