关于闭包需要注意的几点

def  createcounter():
    i=[0]
    def counter():
        i[0]=i[0]+1
        return i[0]
    return counter

a1=createcounter()
a1()

 

利用闭包返回一个计数器函数,每次调用它返回递增整数

 

 1.内部函数只能调用外部函数的参数,但无法修改外部函数的参数,修改只在内部函数作用域内有效

2.外部定义的s为数list,list本身没有变化,变化的是list的第一个元素s[0]

3.不要再内部函数修改外部函数的变量如需修改可以申明变量为nonlocal

posted @ 2018-03-22 21:12  木易不觉  阅读(122)  评论(0)    收藏  举报