python-局部變量和全局變量


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],這樣的形式才是修改,而且是全局變量在局部進行修改。

 

上述問題歸根到底是對基礎的了解不徹底,變量,定義變量,修改變量,重新定義變量。。。。。。。

本人學渣,如有大神不小心看到,不喜勿噴。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM