- 变量作用域
内部函数可以直接读取访问外部函数变量,但是不能修改;访问规则是从内到外函数逐级寻找变量
def outer(a):
i = a + 1
def inner():
j = i + 1
def innest():
print "innest: i=%d,j=%d" % (i, j)
innest()
inner()
outer(1)
$ python t.py
innest: i=2,j=3
三级函数,innest可以访问inner的变量,也可以访问outer的变量,但是均不能修改他们。(如何才能修改,我也不知道,但是python 3提供机制修改)
- 函数闭包
def outer(a):
i = a + 1
def inner():
print "inner: i=%d" % i
return inner
foo = outer(1)
foo()
$ python t.py
inner: i=2
网友评论