Python命名空間及作用域原理實例解析
Python命名空間和作用域
總結
emmm,這一塊講了2個內容,一個是命名空間,一個是作用域。一個一個說吧
命名空間
A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries
上邊這段是官方文檔定義的,簡單來說就是名字到對象的映射,我們知道,python的一切都是對象,你所定義的變量名其實只是個引用。這樣就好理解了。python的命名空間由python數據結構字典實現(xiàn)。
python的命名空間細分的話有三種。如圖所示。

這一部分沒什么好說的,重要的是理解其概念
作用域
A scope is a textual region of a Python program where a namespace is directly accessible. "Directly accessible" here means that an unqualified reference to a name attempts to find the name in the namespace.
由官方文檔可以看出,作用域就是可以直接訪問的區(qū)域。就是全局到局部。這里舉個代碼例子就行了。
#demo.py global_var='haha' #定義全局變量 def tool(): local_var='local' #局部變量 print(local_var) #訪問局部變量,可以訪問 print(global_var) #訪問全局變量,可以訪問 print(local_var) #訪問局部變量,找不到,無法訪問
這一部分的驚喜知識是跟作用域有關的。學到了2個關鍵字global和nonlocal
global_var='haha' #定義全局變量 def tool(): global_var='22' print(global_var) print(global_var) #訪問全局變量,可以訪問 tool()
這段代碼輸出了2個global_var。輸出結果是不一樣的。tool函數里在局部修改了global_var的值,并不影響全局。此時如果你想影響全局,你就需要用到關鍵字global.
global_var='haha' #定義全局變量 def tool(): global global_var global_var='22' print(global_var) tool() print(global_var)
這樣就好了。
nonlocal作用類似,用來修改嵌套作用域的。
def tool():
var=1
def inner():
nonlocal var
var=2
print(var)
inner()
print(var)
tool()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python3實現(xiàn)SMTP發(fā)送郵件詳細教程
這篇文章主要為大家詳細介紹了python3實現(xiàn)SMTP發(fā)送郵件的詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Pandas:Series和DataFrame刪除指定軸上數據的方法
今天小編就為大家分享一篇Pandas:Series和DataFrame刪除指定軸上數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
Windows系統(tǒng)中將Python添加到系統(tǒng)環(huán)境詳細圖文教程
當在命令行使用python或pip指令時,可能會遇到pip不是內部命令的報錯,這通常是因為在安裝Python時未將其添加至系統(tǒng)環(huán)境變量,或者有多個Python環(huán)境導致路徑不一致,文中將解決辦法介紹的非常詳細,需要的朋友可以參考下2024-10-10

