亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python2.7 - python 函數或者類 代碼的執行順序

瀏覽:75日期:2022-06-29 09:50:43

問題描述

修改了一下問題,大家直接先看例 3

對于簡單的控制語句來說,

x = 1if x > 0: print(’true’)else: print(’false’)

我們都知道當判定 x > 0時,else的語句是不會執行的,

python 屬于解釋型語言,對于函數來講,例1

# filename test.pydef test1(): pass # test1()

下面是我不知道正確與否的理解:

1,對于java而言,如果沒有對于 test1() 這一行代碼執行對函數 test1 的調用的話,那就整個程序基本上沒有意義,不會有內存分配,也不會有執行2,但是對于 python 而言,會創建 test1 函數對象,然后保存 test1 中的一系列操作,這些操作不會被執行,即使整個程序沒有對 test1 有任何的調用操作,但是只要程序沒有結束,那么 test1 就會一直存在于內存中。至于原因,是函數 test1 在程序運行后,會成為當前模塊對象,即 module __main__ 的屬性。3,而對于 ‘test1’ 這個函數名而言,他引用了這個函數對象,所以就算沒有調用該函數,垃圾回收機制不會將其回收

嵌套函數 例2

# filename test.pydef test1(): def test2():pass # return test2() # test1()對于例 1,我的理解有錯誤嗎?對比例 2 中 test1 的內層函數 test2 的情況是怎么樣的,有調用和沒有調用的情況會有什么不同嗎?之前問題可能描述的不太清楚,這兒再舉一個例子 3

>>> class A(object): a = [] def test1(self):pass@classmethod def test2(cls):print(’cls.a’, sys.getrefcount(cls.a))print(’cls.test1:’, sys.getrefcount(cls.test1))>>> A.test2()(’cls.a’, 2)(’cls.test1:’, 1)上面的輸出這個 2 可以理解,但是為什么另一個是 1 呢?

>>> def test3(): def test4():pass >>> sys.getrefcount(test3)2>>> dir(test3)[’__call__’, ’__class__’, ’__closure__’, ’__code__’, ’__defaults__’, ’__delattr__’, ’__dict__’, ’__doc__’, ’__format__’, ’__get__’, ’__getattribute__’, ’__globals__’, ’__hash__’, ’__init__’, ’__module__’, ’__name__’, ’__new__’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__setattr__’, ’__sizeof__’, ’__str__’, ’__subclasshook__’, ’func_closure’, ’func_code’, ’func_defaults’, ’func_dict’, ’func_doc’, ’func_globals’, ’func_name’]# sys.getrefcount(test4) NameError: name ’test4’ is not defined現在的問題是 test3 中的內層函數 test4 在內存中嗎?如果在的話,在哪兒?(我覺得是應該在內存中的)如果沒在的話,為什么沒有 test4? 如果沒有 test4 的話,修改一下上面的代碼又該怎么看 ?

def test3(): def test4():pass return test4 # return test4()剛剛修改了問題的時候,突然想到對于編程來講可能沒什么實際意義,大家可能都會知道怎么去定義使用內層函數。但我還是希望有人能解答我的問題

問題解答

回答1:

建議以後這問題拆成兩個不同問題。(1)沒有調用該函數, Python還有另一個內存管理策略 reference counting:「原理: 記錄一個對象被其他對象引用的次數. 當對這個對象的引用移除了, 引用計數也減小了. 要是減到0了, 這個對象也就被釋放了」。所以我猜,應該是在reference counting 時已回收了。

(2)有沒有調用就是看某個對象的引用是否移除了,還有是否有reference cycle,這裡的郵件討論串有一個類近的討論,不知道算不算回答了你這個問題。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 免费国产一级特黄aa大 | 国产精品嫩模在线播放 | 日日摸日日碰日日狠狠 | 免费国产成人高清在线观看不卡 | 99久久国语露脸精品对白 | a一级日本特黄aaa大片 | 一级毛片免费在线观看网站 | 1000部禁片黄的免费看 | 日韩一区二区超清视频 | 不卡免费在线视频 | 青草在线观看 | 91短视频免费版 | 中文字幕亚洲第一 | 北岛玲日韩精品一区二区三区 | 九九爱这里只有精品 | 免费国产不卡午夜福在线 | 在线日韩麻豆一区 | 亚洲一在线 | 婷婷丁香在线观看 | 大毛片 | 日韩高清在线二区 | 日本综合欧美一区二区三区 | 久久久欧美综合久久久久 | 国产视频自拍一区 | 日韩亚洲人成在线综合日本 | 久久久久欧美精品观看 | 亚洲精品国产成人中文 | 日本特级黄色 | 成人在线观看免费爱爱 | 国产第一页亚洲 | 中文字幕 日韩有码 | 亚洲国产日韩无在线播放 | 国产精品综合视频 | 一级黄色绿像片 | 黄色一级视频网 | 日韩另类 | 国产精品成人免费视频 | 99九九99九九九视频精品 | 精品国产人成亚洲区 | 350gao免费永久视频 | 女人18毛片久久鬼色 |