理解闭包

昨天学到python的切片,有些地方不太理解,只能通过定义上去理解

1 def one():
2     def two():
3         print("hello")
4     return two

如上就是一个普通的闭包

接着来一个带参数的闭包

1 def one(i):
2     print("i am "+i)
3     def two(j):
4         print("hello"+j)
5     return two

调用one(‘超小咪’)

输出 i am 超小咪

这里还返回了一个two函数的引用,所以可以来一个赋值操作

f = one(‘超小咪’)

f(‘tom’)

输出 i am 超小咪

hello tom

来一个迷惑人的

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

我们再调用fs里的每个函数

fs[0](),fs[1](),fs[2]()

可能以为会输出1,4,9

其实输出的是9,9,9