一句話:
global:你要重新賦值,就要聲明;不聲明,就只能引用變量
nonlocal: 不管你用,還是賦值,都需要聲明!!!
注: 這裏的用的意思是:使用該變量做運算,但是 不改變 該 變量名 的 原始值
賦值的意思是:將 該 變量名 重新 賦一個 新值!!!
global:
使用global關鍵字聲明: 變量名 -----> 爲全局變量
例: global a
單層函數內部使用到外部全局變量時,如果只是引用變量,不重新複製,不需要聲明global;如果用到全局變量,並且重新賦值,就需要global聲明變量名
在函數內部也可以使用global關鍵字聲明一個全局變量。(有則修改重新賦值,無則創建)
nonlocal:使用在嵌套函數中
內層函數引用外層函數變量時(非全局),需要使用nonlocal關鍵字聲明,纔可以對外層變量進行使用和重新賦值。如果不聲明nonlocal 會繼續向外層函數尋找該變量名,直到找到全局變量爲止。
如果沒有關鍵字的聲明,就是在該函數內部創建一個新的變量,與 外層和全局 的相同變量名的變量無關。