免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

學(xué)習(xí)記錄-Python的局部變量和全局變量

目錄

  • 1 定義
  • 2 作用域的重要性
    • 2.1 全局作用域中的代碼不能使用任何局部變量
    • 2.2 局部作用域中的代碼可以訪問全局變量
    • 2.3 不同局部作用域中的變量不能相互調(diào)用
    • 2.4 在不同的作用域中,可以使用相同的名字命名不同的變量
  • 3 全局變量與局部變量同名
  • 4 global
  • 5 全局變量和局部變量的優(yōu)先級
  • 參考內(nèi)容
1 定義
  • 在被調(diào)用函數(shù)內(nèi)賦值的變量是局部變量
  • 在所有函數(shù)之外賦值的變量是局部變量
【學(xué)習(xí)記錄-Python的局部變量和全局變量】當(dāng)一個函數(shù)被調(diào)用的時候,就會創(chuàng)建一個局部作用域,在這個函數(shù)內(nèi)的所有變量都存在于該局部作用域內(nèi)(global的變量除外),該函數(shù)返回時,這個局部作用域被銷毀,這個局部作用域內(nèi)的局部變量隨之丟失
2 作用域的重要性
  1. 全局作用域中的代碼不能使用任何局部變量
  2. 局部作用域中的代碼可以訪問全局變量
  3. 一個函數(shù)的局部作用域中的代碼,不能使用其他局部作用域中的變量
  4. 在不同的作用域中,可以使用相同的名字命名不同的變量
下面根據(jù)具體代碼舉例說明
2.1 全局作用域中的代碼不能使用任何局部變量def spam():egg = 'this is in function spam'spam()print(egg)在函數(shù)spam()(局部作用域)中給egg賦值,然后在全局作用域中調(diào)用函數(shù)spam()
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖
運行后顯示,egg未被定義
egg是局部變量,而print(egg)中的變量egg是全局變量,全局作用域中的代碼不能使用局部作用域中的變量
這一點我理解為:在調(diào)用子函數(shù)spam()時,創(chuàng)建了一個局部作用域,并在局部作用域中定義了一個局部變量,當(dāng)子函數(shù)調(diào)用結(jié)束后,局部作用域和內(nèi)部定義的局部變量一起沒銷毀,因此在全局作用域中,找不到egg這個局部變量
2.2 局部作用域中的代碼可以訪問全局變量def spam():print(egg)egg = 'Outside the function'spam()
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖
全局變量在聲明或賦值時被創(chuàng)建,直到程序被終止或執(zhí)行結(jié)束
如果在egg賦值前調(diào)用函數(shù)
def spam():print(egg)spam()egg = 'Outside the function'
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖
這時候會顯示變量未被定義
2.3 不同局部作用域中的變量不能相互調(diào)用def spam():print(egg)def init():egg = 'this is in init funcion'init()spam()
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖
2.4 在不同的作用域中,可以使用相同的名字命名不同的變量def spam():egg = 'this is in spam function'print(egg)def init():egg = 'this is in init funcion'print(egg)#egg = 'Out side function'#print(egg)init()spam()
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖
兩個子函數(shù)中都定義了變量egg,但在打印時,互不影響
3 全局變量與局部變量同名在上面說到,可以在局部作用域中調(diào)用全局變量,并且在給出的例子中,我們的子函數(shù)中只有一個print操作,但如果一個變量既在全局作用域中定義,又在局部作用域中定義,那么會出現(xiàn)什么樣的打印結(jié)果
def spam():egg = 'this is in spam function'print(egg)def init():egg = 'this is in init funcion'print(egg)egg = 'Out side function'print(egg)init()spam()
學(xué)習(xí)記錄-Python的局部變量和全局變量

文章插圖

經(jīng)驗總結(jié)擴展閱讀