python 中的闭包

刚刚开始学习python

个人觉得闭包:就是内层函数引用了外层函数的变量,而外层函数的返回值又依赖于内层函数的逻辑,内层函数只有当执行该逻辑的时候才会被调用,从而导致闭包

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2, f3 = count()

结果

>>> f1()
9
>>> f2()
9
>>> f3()
9

直接调用count(),得到的是

>>> count()
[<function count.<locals>.f at 0x000000000261CD90>, <function count.<locals>.f at 0x000000000261CE18>, <function count.<locals>.f at 0x000000000261CEA0>]

之所以每个结果都是9,是因为在内部定义的函数f()中引入了循环变量i,只有当操作的时候才会传入i,而在执行count()结束时 i的值已经是3了,所以在每次执行的时候得到的就是3*3=9。

 

以上均是个人理解,有不对的地方希望大家指正

 

posted on 2017-03-30 15:04  风清扬dyf  阅读(134)  评论(0编辑  收藏  举报

导航