也叫内部函数
嵌套函数里面两个重要的概念:变量作用域和函数闭包
1. 变量作用域
内部函数可以直接读取访问外部函数变量,但是不能修改;访问规则是从内到外函数逐级寻找变量
#!/usr/bin/env python
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提供机制修改)
2. 函数闭包
#!/usr/bin/env python
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
聪明的程序员立马就有疑问了,为什么foo()还能正常执行呢,outer函数已经执行完毕退出了啊,其中的参数a和内部变量i怎么还能被foo使用呢,答案很简单这就是闭包的概念,请自行搜搜关键字:python 闭包