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-hant/n/240588.html