許多小伙伴們?cè)趯W(xué)習(xí) python 的函數(shù)的時(shí)候會(huì)遇到這兩個(gè)問(wèn)題,那就是變量的作用域與全局變量的使用。那么什么是全局變量呢?python 怎么定義全局變量?通過(guò)本篇文章小編講給你聽。
首先得知道,什么是全局變量,什么是局部變量。全局變量,是指所有函數(shù)都能調(diào)用的變量,一般都在代碼塊的最外層。局部變量則相反,局部變量有在當(dāng)前函數(shù)內(nèi)能夠進(jìn)行調(diào)用,跳出函數(shù)后局部變量會(huì)立即被銷毀,無(wú)法調(diào)用。
num = 1 # 這是一個(gè)全局變量 為了美觀我把他放在第一行
def update(): # 示例函數(shù)
y = 1 # 這是一個(gè)局部變量,只有這個(gè)函數(shù)內(nèi)可以使用
print(num) # 全局變量在函數(shù)內(nèi)部是可以引用的
y = num+1 # 全局變量可以參與運(yùn)算
return y # 函數(shù)結(jié)束,y會(huì)被銷毀,外部無(wú)法引用y
update()
#print(y) # 因?yàn)閥是函數(shù)內(nèi)的局部變量,函數(shù)結(jié)束后就會(huì)被銷毀,所以引用不到y(tǒng)
print(num) # 全局變量可以引用
如上所示,只要在最外層定義變量,這個(gè)變量就能全局引用。那么接下來(lái)就會(huì)出現(xiàn)一個(gè)問(wèn)題:如果我要在函數(shù)內(nèi)修改這個(gè)全局變量的值,可行嗎?
答案是可行的,不過(guò)要掌握一定的方法。
int a =1;
void test(){
a = a+100;
}
int main() {
printf("Hello, World!\n %d",a);
a =a+1;
printf("\n%d",a);
test();
printf("\n%d",a);
return 0;
}
如上代碼所示,C語(yǔ)言的全局變量的值可以直接修改,那么 python 能不能像這樣直接修改呢?沒錯(cuò),不可以。如果像C語(yǔ)言那樣直接修改,代碼會(huì)報(bào)錯(cuò)(未解析的引用)。這個(gè)時(shí)候,?global
? 關(guān)鍵字的作用就出現(xiàn)了。如果要在函數(shù)內(nèi)修改全局變量的值,只要在函數(shù)內(nèi)部用 ?global
? 聲明這個(gè)全局變量,就能在函數(shù)內(nèi)修改這全局變量的值。
num = 1 # 這是一個(gè)全局變量 為了美觀我把他放在第一行
def update(): # 示例函數(shù)
global num # 使用global聲明num,在函數(shù)中就可以修改全局變量的值
num += 1 # 全局變量可以參與運(yùn)算
return 0
print(num) # 調(diào)用函數(shù)前查看全局變量
update() # 調(diào)用函數(shù),修改全局變量
print(num) # 調(diào)用函數(shù)后查看全局變量
小結(jié)
以上就是python使用global修改全局變量的全部?jī)?nèi)容,想要學(xué)習(xí)更多更全面的python知識(shí),可以前往python進(jìn)階課程進(jìn)行學(xué)習(xí)。