Python是一種解釋性語言,在編寫代碼時,變數的作用域是一個重要的問題。Python中的變數作用域分為局部變數和全局變數。局部變數是在函數內部定義的變數,全局變數是在函數外部定義的變數。
一、全局變數和局部變數
在Python中,定義變數時,變數默認是局部變數,局部變數只能在函數內部使用。全局變數定義在函數外部,可以在函數內部和外部使用。在函數內部定義全局變數時,需要使用global
關鍵字。
x = 10 #全局變數 def func(): y = 20 #局部變數 global z #定義全局變數 z = 30 print("x=",x) print("y=",y) print("z=",z) func() print("x=",x) print("z=",z)
輸出結果:
x = 10 y = 20 z = 30 x = 10 z = 30
在上面的代碼中,全局變數x
可以在函數內部和外部使用。局部變數y
只能在函數內部使用。在函數內部定義全局變數z
時,需要使用關鍵字global
。
二、函數中的變數作用域
在Python中,變數的作用域是相對的。在函數內部定義的變數可以在函數外部訪問,但是函數外部定義的變數不能在函數內部直接訪問。當函數內部和外部定義了同名變數時,函數內部使用的是局部變數。
x = 10 #全局變數 def func(): x = 20 #局部變數 print("x1=",x) #輸出局部變數 func() print("x2=",x) #輸出全局變數
輸出結果:
x1 = 20 x2 = 10
在上面的代碼中,函數內部定義了一個局部變數x
,但是函數外部也定義了一個同名變數x
,所以在函數內部使用的是局部變數。
三、閉包中的變數作用域
閉包是指可以訪問其他函數內部變數的函數。在Python中,閉包可以使用nonlocal
關鍵字訪問外部函數的變數。
def outer(): x = 10 #outer內的局部變數 def inner(): nonlocal x #使用nonlocal關鍵字訪問outer的x變數 x = 20 #修改outer的x變數 print("inner x=",x) return inner f = outer() f()
輸出結果:
inner x = 20
在上面的代碼中,函數inner
使用了外部函數outer
的變數x
,並且通過nonlocal
關鍵字修改了外部函數的變數。
四、總結
Python中變數作用域分為全局變數和局部變數。全局變數定義在函數外部,可以在函數內外使用。局部變數定義在函數內部,只能在函數內部使用。在函數內部定義全局變數時,需要使用global
關鍵字。函數內部和外部定義同名變數時,函數內部使用的是局部變數。閉包可以訪問外部函數的變數,並且使用nonlocal
關鍵字訪問外部函數的變數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240588.html