App下載

python怎么定義全局變量?如何使用全局變量?

猿友 2021-06-03 16:26:22 瀏覽數(shù) (25924)
反饋

許多小伙伴們?cè)趯W(xué)習(xí) python 的函數(shù)的時(shí)候會(huì)遇到這兩個(gè)問(wèn)題,那就是變量的作用域與全局變量的使用。那么什么是全局變量呢?python 怎么定義全局變量?通過(guò)本篇文章小編講給你聽(tīng)。 

首先得知道,什么是全局變量,什么是局部變量。全局變量,是指所有函數(shù)都能調(diào)用的變量,一般都在代碼塊的最外層。局部變量則相反,局部變量有在當(dāng)前函數(shù)內(nèi)能夠進(jìn)行調(diào)用,跳出函數(shù)后局部變量會(huì)立即被銷(xiāo)毀,無(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ì)被銷(xiāo)毀,外部無(wú)法引用y


update()
#print(y)  # 因?yàn)閥是函數(shù)內(nèi)的局部變量,函數(shù)結(jié)束后就會(huì)被銷(xiāo)毀,所以引用不到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 能不能像這樣直接修改呢?沒(méi)錯(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í)。


0 人點(diǎn)贊