- 變量作用域
內(nèi)部函數(shù)可以直接讀取訪問外部函數(shù)變量,但是不能修改;訪問規(guī)則是從內(nèi)到外函數(shù)逐級(jí)尋找變量
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
三級(jí)函數(shù),innest可以訪問inner的變量,也可以訪問outer的變量,但是均不能修改他們。(如何才能修改,我也不知道,但是python 3提供機(jī)制修改)
- 函數(shù)閉包
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