美文网首页
python函数之闭包

python函数之闭包

作者: 讲武德的年轻人 | 来源:发表于2023-02-02 14:41 被阅读0次

    个人认为,这是一个较好的闭包的例子,典型的可以表明闭包的数据存储功能。首先,这是一个嵌套函数,外层函数counter在其作用域内定义了一个变量base,并且外层函数的返回值是内层函数,这里注意,内层函数用了nonlocal来声明base:在自己的内层函数作用域内,使用外层函数的base变量,而不是又在自己的内部作用域定义自己的base,如此以来,base这个变量在程序运行时,就可以保存在内存中了。

    在编写代码中需要附加额外的状态给函数时,一定要考虑使用闭包。

    def counter():
        base = 0
        def inc(step=1):
            nonlocal base
            base += step
            print(base)
            return base
        return inc
    
    f1 = counter()
    f1()
    f1()
    f1()
    f1()
    f1()
    f1()
    f1()
    

    运行结果:

    "C:\Program Files\Python37\python.exe" D:/python_pycharm1/1.高阶函数.py
    1
    2
    3
    4
    5
    6
    7
    
    Process finished with exit code 0
    

    个人理解,难免有偏差,欢迎评论交流!

    相关文章

      网友评论

          本文标题:python函数之闭包

          本文链接:https://www.haomeiwen.com/subject/izowhdtx.html