python中,局部變量是指定義在局部的變量,局部變量的作用域是局部的。如果局部變量定義在函數體內部,如果在函數體外部想要進行調用這個局部變量,函數首先需要被執行,在函數體內部也可以定義全局變量,只不過在定義的時候需要在前面加上關鍵詞global。下面的例子可以幫助理解。
def fun():
global name #①
name='qqqq'
func() #②
print(name)
函數執行的時候,如果①②都被注釋掉,打印出錯;如果①被注釋掉,②不注釋掉,打印也會出錯;如果①不被注釋掉,②注釋掉,打印也會出錯;只有①和②都不被注釋掉的時候,才能正確打印name。具體怎么回事,請仔細回想思索。
----------------------------------------分割線-----------------------------------------------------------------------
全局變量在局部進行修改的問題:
全局變量的在局部修改的問題取決於變量類型,如果變量類型為字符串或者數字:
a='wwww'
def func():
a='eeee'
func()
print(a)
執行上述代碼,打印出來的還是wwww,這是因為在a='eeee'不能夠稱之為修改變量,而應該稱之為重新定義一個局部變量,而該重新定義的局部變量恰巧和全局變量名字是一樣的。局部變量的作用於不是全局,因此打印出來的是wwww。
-----------------------------------------------------------------------------------------------------------------------
如果變量類型為列表,字典,集合這樣的數據類型:
a=[1,2,3,4]
def func():
a=[5,6,7,8]
func()
print(a)
執行上述代碼,打印結果是[1,2,3,4],這是因為函數內部的a=[5,6,7,8]屬於重新定義,不屬於更改。
-----------------------------------------------------------------------------------------------------------------------
a=[1,2,3,4]
def func():
a[1]='tttt'
func()
print(a)
而執行上述代碼,打印結果為[1,'tttt',3,4],這樣的形式才是修改,而且是全局變量在局部進行修改。
上述問題歸根到底是對基礎的了解不徹底,變量,定義變量,修改變量,重新定義變量。。。。。。。
本人學渣,如有大神不小心看到,不喜勿噴。