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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python2.7 - python 函數(shù)或者類(lèi) 代碼的執(zhí)行順序

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

問(wèn)題描述

修改了一下問(wèn)題,大家直接先看例 3

對(duì)于簡(jiǎn)單的控制語(yǔ)句來(lái)說(shuō),

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

我們都知道當(dāng)判定 x > 0時(shí),else的語(yǔ)句是不會(huì)執(zhí)行的,

python 屬于解釋型語(yǔ)言,對(duì)于函數(shù)來(lái)講,例1

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

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

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

嵌套函數(shù) 例2

# filename test.pydef test1(): def test2():pass # return test2() # test1()對(duì)于例 1,我的理解有錯(cuò)誤嗎?對(duì)比例 2 中 test1 的內(nèi)層函數(shù) test2 的情況是怎么樣的,有調(diào)用和沒(méi)有調(diào)用的情況會(huì)有什么不同嗎?之前問(wèn)題可能描述的不太清楚,這兒再舉一個(gè)例子 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)上面的輸出這個(gè) 2 可以理解,但是為什么另一個(gè)是 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現(xiàn)在的問(wèn)題是 test3 中的內(nèi)層函數(shù) test4 在內(nèi)存中嗎?如果在的話(huà),在哪兒?(我覺(jué)得是應(yīng)該在內(nèi)存中的)如果沒(méi)在的話(huà),為什么沒(méi)有 test4? 如果沒(méi)有 test4 的話(huà),修改一下上面的代碼又該怎么看 ?

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

問(wèn)題解答

回答1:

建議以後這問(wèn)題拆成兩個(gè)不同問(wèn)題。(1)沒(méi)有調(diào)用該函數(shù), Python還有另一個(gè)內(nèi)存管理策略 reference counting:「原理: 記錄一個(gè)對(duì)象被其他對(duì)象引用的次數(shù). 當(dāng)對(duì)這個(gè)對(duì)象的引用移除了, 引用計(jì)數(shù)也減小了. 要是減到0了, 這個(gè)對(duì)象也就被釋放了」。所以我猜,應(yīng)該是在reference counting 時(shí)已回收了。

(2)有沒(méi)有調(diào)用就是看某個(gè)對(duì)象的引用是否移除了,還有是否有reference cycle,這裡的郵件討論串有一個(gè)類(lèi)近的討論,不知道算不算回答了你這個(gè)問(wèn)題。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产手机精品自拍视频 | 91久国产在线观看 | 日本一道免费一区二区三区 | 日韩美香港a一级毛片 | 亚洲精品日韩在线一区 | 大狠狠大臿蕉香蕉大视频 | 亚洲wu码| 亚洲精品资源在线 | 亚洲欧美小视频 | 成人欧美一区二区三区的电影 | 欧美色爱综合网 | 岛国毛片一级一级特级毛片 | 亚洲日本人成网站在线观看 | 又黄又爽又猛午夜性色播在线播放 | 免费a级毛片在线观看 | 国产精品久久久久乳精品爆 | www视频在线免费观看 | 日韩啊v| 九九热亚洲精品综合视频 | 欧美一级带 | 青青久在线精品视频 | 亚洲三级影院 | 韩国黄色一级毛片 | 网站在线观看高清免费 | sese久久| 中文字幕有码在线视频 | 黄色aaa级片| 日韩一级片免费 | 亚洲色图视频在线观看 | 国产一区二区免费播放 | 视频在线观看一区二区三区 | 看真人一级毛多毛片 | 免费视频片在线观看 | 日本特交大片免费观看 | 国产成人精品亚洲 | 一级毛片在线免费播放 | 一级 黄 色 片免费 一级@片 | 九一视频在线免费观看 | 国产黄频在线观看高清免费 | 337日本| 亚洲日本欧美产综合在线 |