Python函數變量作用域及函數內部的函數使用參數的注意事項

版權聲明:轉載請註明作者(獨孤尚良dugushangliang)出處:https://blog.csdn.net/dugushangliang/article/details/102859977

 

衆所周知,Python尋找變量的順序如下圖所示。

(圖片來自對網頁的截圖:https://www.runoob.com/python3/python3-namespace-scope.html

這個尋找只是使用這個變量,即只讀不寫。如果有賦值等操作時則會報錯說變量未定義。以下面代碼爲例:如果c函數只是使用b,則可以直接用,程序會根據上文所說的順序來尋找這個變量。所以如果沒有b=5這種對b賦值的操作,則不會有任何問題。但如果要對b進行修改,而在對b進行賦值之前使用b,這時候程序會報錯說變量未定義,而不是去找外圍的b。所以當內部作用域想修改外部作用域的變量時,就要用到global和nonlocal關鍵字了。global是全局的,nonlocal是上一層的。

def a():
    b=1
    def c():
        #nonlocal  b
        print(b,b<=3)
        b=5
    c()
    print(b)
a()

 

獨孤尚良dugushangliang——著

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章