App下載

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

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

許多小伙伴們在學(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í)。


0 人點(diǎn)贊