刚刚开始学习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。
以上均是个人理解,有不对的地方希望大家指正