global关键字
在局部作用域中使用全局变量,需要使用global关键字。
>>> a= 10
>>> def test():
global a
a += 1
print a
>>> test()
11
>>> a
11
作用域数量
python支持多个作用域。程序最多有n层函数嵌套,就有n+1个作用域。
比如下面程序就有3个作用域:全局作用域
,foo()局部作用域
,bar()局部作用域
:
>>> def foo():
m = 3
def bar():
n = 4
print m + n
print m
bar()
>>> foo()
3
7
bar()局部作用域
可以引用它外部的其它两个作用域:全局作用域
,foo()局部作用域
的变量。反之却不能。
python2.1之前是只支持两个作用域的,也就是说当时这段程序会报错,提示:局部变量m未定义
。
Scope and lambda
现在,lambda表达式可以引用其外部作用域中的变量。(Python2.1之前不可以)
>>> x = 10
>>> def foo():
y = 5
bar = lambda :x+y
print bar()
>>> foo()
15