中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python變量作用域是什么?怎么用?

發布時間:2020-06-23 10:37:55 來源:億速云 閱讀:176 作者:清晨 欄目:開發技術

這篇文章將為大家詳細講解有關Python變量作用域是什么?怎么用?,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

在寫代碼的時候,免不了要使用變量。但程序中的一個變量并不一定是在哪里都可以被使用,根據情況不同,會有不同的“有效范圍”。

看這樣一段代碼:

def func(x):
  print ('X in the beginning of func(x): ', x)
  x = 2
  print ('X in the end of func(x): ', x)
x = 50func(x)print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x): 50
X in the end of func(x): 2
X after calling func(x): 50

變量 x 在函數內部被重新賦值。但在調用了函數之后,x 的值仍然是50。為什么?

這就得說一下變量的“作用域”:

當函數內部定義了一個變量,無論是作為函數的形參,或是另外定義的變量,它都只在這個函數的內部起作用。函數外即使有和它名稱相,另外注意:光理論是不夠的。這里順便送大家一套2020最新python入門到高級項目實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!

同的變量,也沒有什么關聯。這個函數體就是這個變量的作用域。像這樣在函數內部定義的變量被稱為“局部變量”。

要注意的是,作用域是從變量被定義的位置開始。像這樣的寫法是有問題的:

def func():
  print (y)
  y = 2
  print (y)

報錯:

UnboundLocalError: local variable 'y' referenced before assignment

因為在 y = 2 之前,y 并不存在,調用 y 的值就會出錯。

回到開始那個例子:

在函數 func 外部,定義的變量 x,賦值為 50,作為參數傳給了函數 func。而在函數 func 內部,變量 x 是形參,它的作用域是整個函數體內部。它與外面的那個 x 沒有關系。只不過它的初始值是由外面那個 x 傳遞過來的。

所以,雖然函數體內部的 x 被重新賦值為 2,也不會影響外面那個 x 的值。

不過有時候,我們希望能夠在函數內部去改變一些變量的值,并且這些變量在函數外部同樣被使用到。怎么辦?

一種方法是,用 return 把改變后的變量值作為函數返回值傳遞出來,賦值給對應的變量。比如開始的那個例子,可以在函數結尾加上

return x

然后把調用改為

x = func(x)

還有一種方法,就是使用“全局變量”。

在 Python 的函數定義中,可以給變量名前加上 global 關鍵字,這樣其作用域就不再局限在函數塊中,而是全局的作用域。

通過 global 改寫開始的例子:

def func():
  global x  print ('X in the beginning of func(x): ', x)
  x = 2
  print ('X in the end of func(x): ', x)
x = 50func()print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x): 50
X in the end of func(x): 2
X after calling func(x): 2

函數 func 不再提供參數調用。而是通過 global x 告訴程序:這個 x 是一個全局變量。于是函數中的 x 和外部的 x 就成為了同一個變

量。這一次,當 x 在函數 func 內部被重新賦值后,外部的 x 也隨之改變。

前面講的局部變量和全局變量是 Python 中函數作用域最基本的情況。實際上,還有一些略復雜的情況,比如:

def func():
  print ('X in the beginning of func(x): ', x)  # x = 2
  print ('X in the end of func(x): ', x)
x = 50func()print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x): 50
X in the end of func(x): 50
X after calling func(x): 50

程序可以正常運行。雖然沒有指明 global,函數內部還是使用到了外部定義的變量。然而一旦加上

x = 2

這句,程序就會報錯。因為這時候,x 成為一個局部變量,它的作用域從定義處開始,到函數體末尾結束。

建議在寫代碼的過程中,顯式地通過 global 來使用全局變量,避免在函數中直接使用外部變量。

關于Python變量作用域是什么?怎么用?就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黎城县| 浙江省| 武邑县| 六安市| 灵台县| 淮安市| 大渡口区| 阿拉善右旗| 柘城县| 苏尼特右旗| 宣恩县| 马山县| 贡嘎县| 琼结县| 古蔺县| 罗甸县| 永善县| 林芝县| 白玉县| 南溪县| 永福县| 滨海县| 东丽区| 彭阳县| 临湘市| 凌源市| 崇左市| 库伦旗| 若尔盖县| 奉新县| 高雄县| 清新县| 寻乌县| 嘉黎县| 南木林县| 阿拉善右旗| 万源市| 故城县| 禹州市| 盐亭县| 石景山区|