Ste*_*art 2 python scope global-variables
为什么在Python下面的工作,没有宣布一个在全球范围内第一个?
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
Run Code Online (Sandbox Code Playgroud)
在我看来,这是正确的方法:
a = None
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
Run Code Online (Sandbox Code Playgroud)
基本上是出于a = 5创建新局部变量的相同原因:当您分配给变量时,Python并不关心它是否已经存在.该global声明仅表示"此范围内以下名称的任何使用现在都被视为在全球范围内运作".
您可以a = 5在模块顶层执行是否a已存在.所以你可以global a; a = 5在一个函数内部做. global使函数内部的赋值与全局级别的赋值一样,包括名称是否已存在无关紧要.