在使用變量的時候,有時候會發生變量引用錯誤,或者程序運行完,程序獲得的結果與預期存在差異。函數
記住一條原則:任何變量在使用前,都必須確保「變量引用是否明確」!spa
咱們來看一些例子:
(1)局部變量
函數內部的變量名若是第一次出現,且出如今「=」左邊,即被視爲定義一個局部變量。無論全局域中有沒有用到該變量名,函數中使用的將是局部變量。code
ps:此處會報錯。由於num
首先被當成了一個局部變量,到等號右側後發現這個變量還沒賦值就被用於計算,因而報錯。Num += 100
:這句話是有歧義的,num
既能夠表示引用全局變量,也能夠是建立一個新的局部變量。
在Python
中,默認建立局部變量並使用它,除非顯式聲明global
。ip
(2)函數內部使用全局變量作用域
此時num2
引用的是全局變量中的num2
。此處是明確的,由於把num2
當作一個局部變量的話,會報錯,只能是全局的num2
,故不須要聲明global
。it
(3)函數內部修改全局變量
在函數中,若是想使用並修改到全局變量,則須要使用到global class
(4)錯誤使用global
變量
if __name__ == ‘__main__’
:中使用global
。
最好的直接解決這個問題的方法是把global聲明從 if __name__==’__main__’:
中刪除,在這裏是不須要聲明global
的。
由於與其餘語言不一樣,Python
中的if
語句不會再引入一個新的做用域(scope),任何變量分配的都是全局變量(global)。做爲一個全局變量,在使用變量名以前是不容許再一次聲明爲全局變量。
即if __name__==’__main__’:
中的變量都是全局的,因此在main
中間再一次聲明global
是錯誤的,因此係統會發出警告。cli
❤ thanks for watching, keep on updating...
點個贊再走吧引用