2

为什么下面的代码在 Python 中工作,而不是先在全局范围内声明a ?

def setA():
   global a 
   a = 5

def printA():
    print a

setA()
printA()

在我看来,这是正确的方法:

a = None

def setA():
   global a 
   a = 5

def printA():
    print a

setA()
printA()
4

1 回答 1

8

基本上与创建新局部变量的原因相同a = 5:当您分配一个变量时,Python 不在乎它是否已经存在。该global声明仅表示“在此范围内使用以下名称的任何使用现在都被视为在全局范围内运行”。

无论是否存在,您都可以a = 5在模块顶层执行。a所以你可以global a; a = 5在一个函数里面做。 global使函数内部的赋值就像全局级别的赋值一样工作,包括名称是否已经存在并不重要这一事实。

于 2013-01-03T19:52:14.970 回答