Python 命名空間的生命周期
不同的命名空間在不同的時刻創(chuàng)建,有不同的生存期。
1、內(nèi)置命名空間在Python解釋器啟動時創(chuàng)建,會一直保留,不被刪除。
2、模塊的全局命名空間在模塊定義被讀入時創(chuàng)建,通常模塊命名空間也會一直保存到解釋器退出。
3、當(dāng)函數(shù)被調(diào)用時創(chuàng)建一個局部命名空間,當(dāng)函數(shù)返回結(jié)果或拋出異常時,被刪除。每一個遞歸調(diào)用的函數(shù)都擁有自己的命名空間。
Python的一個特別之處在于其賦值操作總是在最里層的作用域。賦值不會復(fù)制數(shù)據(jù)——只是將命名綁定到對象。刪除也是如此:"dely"只是從局部作用域的命名空間中刪除命名y。事實上,所有引入新命名的操作都作用于局部作用域。
示例:
i=1
deffunc2():
i=i+1
func2();
#錯誤:UnboundLocalError:localvariable'i'referencedbeforeassignment
由于創(chuàng)建命名空間時,python會檢查代碼并填充局部命名空間。在python運行那行代碼之前,就發(fā)現(xiàn)了對i的賦值,并把它添加到局部命名空間中。當(dāng)函數(shù)執(zhí)行時,python解釋器認(rèn)為i在局部命名空間中但沒有值,所以會產(chǎn)生錯誤。
deffunc3():
y=123
dely
print(y)
func3()
#錯誤:UnboundLocalError:localvariable'y'referencedbeforeassignment
#去掉"dely"語句后,運行正常
以上內(nèi)容為大家介紹了Python命名空間的生命周期,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
pythonfor循環(huán)是什么
pythonfor循環(huán)是什么在做遍歷的時候,對于一些數(shù)據(jù)的反復(fù)循環(huán)執(zhí)行,我們會用到for循環(huán)的語句。可以說這是新手入門必學(xué)的語句之一,在很多基礎(chǔ)循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉(zhuǎn)換
python中contextmanager()的轉(zhuǎn)換1、說明當(dāng)發(fā)出請求時,requests庫會在將請求實際發(fā)送到目標(biāo)服務(wù)器之前準(zhǔn)備該請求。請求準(zhǔn)備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創(chuàng)建類的構(gòu)造方法還是實例方法,最少要包含一個參數(shù)self。2、通過實例的self參數(shù)與對象進(jìn)行綁定,程序...詳情>>
2023-11-13 03:46:48熱門推薦
python實現(xiàn)WSGI的框架
沸pythonfor循環(huán)是什么
熱python-=是什么意思
熱python打開文本文件有哪些方法?
新pythoncontextmanager()的轉(zhuǎn)換
pythonre是什么?
pythondecimal是什么
python列表追加元素出錯的解決
python使用loguru操作日志
python使用items()遍歷鍵值對
pythonvim中有哪些對象
python實例方法中self的作用
pythonin和is的區(qū)分
pythonos.path.join()函數(shù)的使用
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費用
了解課程價格 -
優(yōu)惠活動
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊
了解師資團(tuán)隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線