python中在哪些情况下必须使用global来声明全局变量?

这段代码不用在函数中声明globalx就可以打印出x的值
x=20
defgetx():
printx
getx()
那请问在哪些情况下必须要使用global声明全局变量?
以下是一个多线程的python代码片段,其中的x,l都是全局变量,但在threadcode()函数中只声明了globalx没有globall。完整的代码是可以成功运行,但是把globalx注释掉后就会报错。请问这是为什么,Lock对象比较特殊吗?
importthreading,time,sys
x=50
l=threading.Lock()
defthreadcode():
globalx
l.acquire()
print'Thread%sinvoked.'%threading.currentThread().getName()
try:
print'Thread%srunning.'%threading.currentThread().getName()
x=x+50
print'Thread%ssetxto%d.'%\
(threading.currentThread().getName(),x)
finally:
l.release()
...
qq_遁去的一_1
浏览 590回答 2
2回答

MMMHUHU

对于Python2而言,对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a=XXX这种写法)的话,就不需要声明global。相反,如果你对其赋了值的话,那么你就需要声明global。声明global的话,就表示你是在向一个全局变量赋值,而不是在向一个局部变量赋值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript