在python中,引用全局变量有些特殊的地方。我们来看代码例子。
>>> num=1 >>> def test(): ... print num ... value = num+1 ... print value ... >>> test() 1 2
上面代码先定义了一个全局变量num,这时我们就可以在函数内部随便使用这个全局变量。
但是如果我们要在函数内部修改全局变量,写法就有些特殊了,如:
>>> num=1 >>> def test(): ... num=2 ... print num ... >>> test() 2 >>> num 1
可以看出,在函数内部 num=2 操作并不是对全局变量操作,而是产生一个新的局部变量。对全局变量没有任何影响。
某些情况下,还会报错,如:
>>> num=1 >>> def test(): ... num=num+1 ... >>> test() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in test UnboundLocalError: local variable 'num' referenced before assignment
从报错的信息看,在test函数内,仍然把num当作局部变量,但因为没有赋值前就被引用,所以报错。
要想在函数内,引用全局变量,正确的做法是需要先通过 global 关键字引用一下,如:
>>> num=1 >>> def test(): ... global num ... num=num+1 ... print num ... >>> test() 2 >>> num 2
可以看出,用global关键字标识下后,就可以在函数内使用了。
当然,需要强调一下,正常在应用开发中,我们应该避免使用全局变量,这里是从语法角度来解释下。