這段代碼不用在函數(shù)中聲明globalx就可以打印出x的值x=20defgetx():printxgetx()那請(qǐng)問在哪些情況下必須要使用global聲明全局變量?以下是一個(gè)多線程的python代碼片段,其中的x,l都是全局變量,但在threadcode()函數(shù)中只聲明了globalx沒有g(shù)loball。完整的代碼是可以成功運(yùn)行,但是把globalx注釋掉后就會(huì)報(bào)錯(cuò)。請(qǐng)問這是為什么,Lock對(duì)象比較特殊嗎?importthreading,time,sysx=50l=threading.Lock()defthreadcode():globalxl.acquire()print'Thread%sinvoked.'%threading.currentThread().getName()try:print'Thread%srunning.'%threading.currentThread().getName()x=x+50print'Thread%ssetxto%d.'%\(threading.currentThread().getName(),x)finally:l.release()...
python中在哪些情況下必須使用global來聲明全局變量?
桃花長(zhǎng)相依
2019-04-06 16:57:49