[python學(xué)習(xí)心得13]函數(shù)的內(nèi)存分析

核心點:在python里,一切都是對象,函數(shù)也是對象!
當(dāng)執(zhí)行完def定義之后,會在內(nèi)存里創(chuàng)建一個函數(shù)對象,并指向函數(shù)名所在的變量里。

例如,

 def print_star(n):
      print("*"*n)
        


print(id(print_star))
c = print_star
print(id(c))

#運行結(jié)果print(id(print_star))和print(id(c))是一樣的。

內(nèi)存分析圖如下:


內(nèi)存分析圖.png

當(dāng)函數(shù)定義完成后,會在堆內(nèi)存里創(chuàng)建一個函數(shù)對象,并將地址傳遞給棧內(nèi)存里的變量,print_star;


內(nèi)存分析圖.png

c = print_star,在棧內(nèi)存里,創(chuàng)建一個新的變量c,指向函數(shù)對象。

因此,調(diào)用函數(shù)c(),也會通過引用,找到堆內(nèi)存中的函數(shù)對象,并執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容