遇到一個尷尬事情:
Python 我在方法外定義了一個變量,在方法內引用時候,默認是不引用外部的那個變量的,而是重新定義了一個。為此,溫故了一次 Python 的兩個關鍵字 nonlocal 和 global 。
這里方法 test 內的 a 變量相當於重新定義了一個 變量,這個變量跟 最外面的 a變量一點關系都沒有呀~
如果想要在 def 方法內給 最外面的 a變量賦值怎么辦?
當當當當 ··· global 就來了。
有點類似於方法傳參,也優點類似於變量引用。反正就是重新引用了一下最外部的 a變量
沒有引用的時候,所有變量雖然同名,但都是單獨定義和使用的:
還有一個 聲明變量的方法 nonlocal
使 本該作為內部函數的局部變量綁定到外部函數命名空間從而變成外部函數的局部變量。
【注: nonlocal 適用於在局部函數 中 的局部函數 】
如果 nonlocal 不是在局部函數 中 的局部函數
會報錯 - no binding for nonlocal 'a' found
總結: nonlocal 是綁定 最接近 本機函數的外部函數(非全局)的局部變量
global 是綁定的全局變量