我們?cè)谝粋€(gè)函數(shù)func2()中想使用另一個(gè)函數(shù)func1()中的變量,通常會(huì)使用返回值的方法,但是在調(diào)用的時(shí)候,也會(huì)將func2()整體運(yùn)行一遍:
如果func2()函數(shù)體的運(yùn)行對(duì)于func1()取返回值沒(méi)有影響則完全可以,但是如果func2()函數(shù)體的運(yùn)行對(duì)于func1()取返回值有影響,或者func1()的函數(shù)體中引入了其他函數(shù)的返回值,則會(huì)導(dǎo)致問(wèn)題。
如果我們?cè)讷@取func1()中的值時(shí)并不想運(yùn)行func1()的函數(shù)體,我們需要把所取的值設(shè)置為全局變量,全局變量需要先定義,然后在函數(shù)體中聲明并使用,這樣我們就可以直接在func2()中調(diào)用test1:
在類(lèi)中也是同樣,一個(gè)函數(shù)func2()直接使用另一個(gè)函數(shù)func1()的返回值會(huì)將func1()函數(shù)體運(yùn)行一遍:
在這里我們使用另一種方法,將需要獲取的值設(shè)置為(類(lèi)變量),調(diào)用的時(shí)候使用 "類(lèi)名.類(lèi)變量名 " 調(diào)用:
當(dāng)然,也可以使用全局變量,效果也是一樣的:
還可以使用成員變量,使用"self.成員變量名"調(diào)用:
Tips:
只讀取全局全局變量而不修改值,可以不用global聲明
x = 10
def func():
print(x)
def func2():
global x
x = 20
if __name__ == '__main__':
func()
func2()
print(x)
# 10
# 20
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。