嵌套函数

2018-07-14  本文已影响6人  yalesaleng
  1. 变量作用域
    内部函数可以直接读取访问外部函数变量,但是不能修改;访问规则是从内到外函数逐级寻找变量
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提供机制修改)

  1. 函数闭包
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 
上一篇 下一篇

猜你喜欢

热点阅读