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
微信掃一掃
支付寶掃一掃