Discuss / Python / 求解惑

求解惑

Topic source

维他命_心

#1 Created at ... [Delete] [Delete and Lock User]

为什么再次调用createCounter函数时cnt没有初始化为[0],反而能继续增加呢,真的不懂,求大佬解答T^T

def createCounter():
    cnt = [0] # 将cnt设定为数组
    def counter():
        cnt[0] = cnt[0]+1 # 修改数组中的元素值
        return cnt[0] # 返回修改的元素值
    return counter
counterA = createCounter()
print(counterA(), counterA(), counterA(), counterA(), counterA()) # 1 2 3 4 5

维他命_心

#2 Created at ... [Delete] [Delete and Lock User]

看完这篇文章Python中的闭包到底有什么用以后,终于懂了。本质就是

“闭包”的最大的作用——保存局部信息不被销毁。

这其实就是廖老师说的

当一个函数返回了一个函数后,其内部的局部变量还被新函数引用

我实在是花了不少功夫才得以理解

确实讲的很清楚 感谢分享


  • 1

Reply