許多小伙伴們在學(xué)習(xí) python 的函數(shù)的時(shí)候會遇到這兩個(gè)問題,那就是變量的作用域與全局變量的使用。那么什么是全局變量呢?python 怎么定義全局變量?通過本篇文章小編講給你聽。
首先得知道,什么是全局變量,什么是局部變量。全局變量,是指所有函數(shù)都能調(diào)用的變量,一般都在代碼塊的最外層。局部變量則相反,局部變量有在當(dāng)前函數(shù)內(nèi)能夠進(jìn)行調(diào)用,跳出函數(shù)后局部變量會立即被銷毀,無法調(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會被銷毀,外部無法引用y
update()
#print(y) # 因?yàn)閥是函數(shù)內(nèi)的局部變量,函數(shù)結(jié)束后就會被銷毀,所以引用不到y(tǒng)
print(num) # 全局變量可以引用
如上所示,只要在最外層定義變量,這個(gè)變量就能全局引用。那么接下來就會出現(xiàn)一個(gè)問題:如果我要在函數(shù)內(nèi)修改這個(gè)全局變量的值,可行嗎?
答案是可行的,不過要掌握一定的方法。
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語言的全局變量的值可以直接修改,那么 python 能不能像這樣直接修改呢?沒錯,不可以。如果像C語言那樣直接修改,代碼會報(bào)錯(未解析的引用)。這個(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修改全局變量的全部內(nèi)容,想要學(xué)習(xí)更多更全面的python知識,可以前往python進(jìn)階課程進(jìn)行學(xué)習(xí)。