您好,登錄后才能下訂單哦!
小編給大家分享一下python中名稱空間與作用域的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
函數內部的函數只能在函數內部調用,不能在函數外部調用,通過接下來的學習你將會知道為什么會出現這種情況。
名稱空間(name spaces):在內存管理那一章節時,我們曾說到變量的創建其實就是在內存中開辟了一個新的空間。但是我們一直在回避變量名的存儲,其實在內存中有一塊內存空間存儲變量名與變量間的綁定關系的空間,而這個空間稱為名稱空間,真正存名字的地方是棧區,名稱空間只是把棧區分成為幾個部分,有了名稱空間我們就可以在棧區存放相同的名字。
內置名稱空間:存放Pyhton
解釋器自帶的名字,如int
、float
、len
生命周期:在解釋器啟動時生效,在解釋器關閉時失效
全局名稱空間:除了內置和局部的名字之外,其余都存放在全局名稱空間,如下面代碼中的x
、func
、l
、z
生命周期:在文件執行時生效,在文件執行結束后失效
局部名稱空間:用于存放函數調用期間函數體產生的名字,如下面代碼的f2
生命周期:在文件執行時函數調用期間時生效,在函數執行結束后失效
注意:即使是對同一個函數,即便它是空函數,如果我們對它進行多次調用的話,調用一次產生一個局部名稱空間,
由于.py文件是由Python
解釋器打開的,因此一定是在Python
解釋器中的內置名稱空間加載結束后,文件才開始打開,這個時候才會產生全局名稱空間,但文件內有某一個函數被調用的時候,才會開始產生局部名稱空間,因此名稱空間的加載順序為:內置–》全局–》局部。
由于名稱空間是用來存放變量名與值之間的綁定關系的,所以但凡要查找名字,一定是從三者之一找到,查找順序為:
從當前的所在位置開始查找,如果當前所在的位置為局部名稱空間,則查找順序為:局部–》全局–》內置。
域指的是區域,作用域即作用的區域。
全局作用域:全局有效,被所有的函數共享,包含內置名稱空間和全局名稱空間。
局部作用域:局部有小,臨時存儲,只包含局部名稱空間。
2.3 注意點
需要注意的是:作用域關系在函數定義階段就固定死了,與函數的調用無關。
修改全局作用域中的變量。
修改局部作用域中的變量。
在局部想要修改全局的可變類型,不需要任何聲明,可以直接修改。
在局部如果想要修改全局的不可變類型,需要借助global
聲明,聲明為全局的變量,即可直接修改。
以上是“python中名稱空間與作用域的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。