python闭包函数实现一个计数器

文章发布于 2023-08-08

闭包

在函数的内部定义一个函数。闭包的作用有两点,一是读取函数内部的局部变量,二是不会被垃圾回收机制回收,会一直保存在内存中。

def c():
    i = 1
    print('init')
    def s():
        return 1
    return s

调用

c1= c()
print(c1())
print(c1())
print(c1())

结果

init
1
1
1

结果显示,只输出了一次init,输出了三次子函数。

闭包实现计数器

改动一下上面的函数,利用闭包的特性来实现一个计数器。

def c():
    i = 1
    print('__')
    def s():
        nonlocal  i
        i += 1
        return i
    return s


c1= c()
print(c1())
print(c1())
print(c1())

上面的结果

__
2
3
4

当重复执行c1()时,实质是执行的c函数内的s子函数。通过反复执行之后,可以实现重复执行s函数来增加计数。