第八章 函數(shù)-5
8.5 全局變量和局部變量
局部變量是在函數(shù)內(nèi)部定義的變量,只能在函數(shù)內(nèi)部使用,用作臨時(shí)保存函數(shù)內(nèi)部需要使用的數(shù)據(jù),函數(shù)執(zhí)行結(jié)束后,函數(shù)內(nèi)部的局部變量,會(huì)被系統(tǒng)回收。因此在不同的函數(shù)內(nèi)可以定義相同的名字的局部變量,彼此之間不會(huì)產(chǎn)生影響。全局變量是在函數(shù)外部定義的變量(沒(méi)有定義在某一個(gè)函數(shù)內(nèi)),所有函數(shù)內(nèi)部都可以使用這個(gè)變量。請(qǐng)看下面例子:
total = 10? # 這是一個(gè)全局變量
?
def sum(arg1, arg2):
??? # 返回2個(gè)參數(shù)的和
??? total = arg1 + arg2? # total在這里是局部變量.
??? print("函數(shù)內(nèi)是局部變量 : ", total)
??? return total
?
# 調(diào)用sum函數(shù)
sum(10, 20)
print("函數(shù)外是全局變量 : ", total)
?
運(yùn)行程序輸出結(jié)果為:
函數(shù)內(nèi)是局部變量 :? 30
函數(shù)外是全局變量 :? 0
?
但是存在一個(gè)問(wèn)題,函數(shù)內(nèi)部怎么使用全局變量呢?答案:函數(shù)內(nèi)部加一行代碼說(shuō)明使用全局變量,上面程序可以改寫(xiě)成下述形式,實(shí)現(xiàn)函數(shù)內(nèi)部訪(fǎng)問(wèn)全局變量total。
total = 20? # 這是一個(gè)全局變量
?
def sum(arg1, arg2):
??? # 返回2個(gè)參數(shù)的和
??? global total
??? total = arg1 + arg2? # total在這里是全局變量.
??? print("函數(shù)內(nèi)是全局變量 : ", total)
??? return total
?
# 調(diào)用sum函數(shù)
print("調(diào)用函數(shù)前,函數(shù)外是全局變量 : ", total)
sum(20, 30)
print("調(diào)用函數(shù)后,函數(shù)外是全局變量", total)
?
運(yùn)行程序輸出結(jié)果為:
調(diào)用函數(shù)前,函數(shù)外是全局變量 :? 20
函數(shù)內(nèi)是全局變量 :? 50
調(diào)用函數(shù)后,函數(shù)外是全局變量 50