• 闭包


    闭包

    1,闭包只能存在嵌套函数中。

    2, 内层函数对外层函数非全局变量的引用(使用),就会形成闭包。

    被引用的非全局变量也称作自由变量,这个自由变量会与内层函数产生一个绑定关系,

    自由变量不会再内存中消失。

    闭包的作用:保证数据的安全。

    def make_averager():
        l1 = []
        def averager(new_value):
            l1.append(new_value)
            print(l1)
            total = sum(l1)
            return total/len(l1)
        return averager
    
    avg = make_averager()  # averager
    print(avg(100000))
    print(avg(110000))
    
    # 例一:
    # def wrapper():
    #     a = 1
    #     def inner():
    #         print(a)
    #     return inner
    # ret = wrapper()
    
    #
    # # 例二:
    # a = 2
    # def wrapper():
    #     def inner():
    #         print(a)
    #     return inner
    # ret = wrapper()
    
    
    # # 例三:
    #   也是闭包!
    # def wrapper(a,b):
    #     def inner():
    #         print(a)
    #         print(b)
    #     return inner
    # a = 2
    # b = 3
    # ret = wrapper(a,b)
    # print(ret.__code__.co_freevars)  # ('a', 'b')
    # 如何代码判断闭包?
    
    
    def make_averager():
        l1 = []
        def averager(new_value):
            l1.append(new_value)
            print(l1)
            total = sum(l1)
            return total/len(l1)
        return averager
    
    avg = make_averager()  # averager
    #判断闭包
    print(avg.__code__.co_freevars)
    
  • 相关阅读:
    Java堆栈内存总结
    Java String使用总结
    Java异常处理
    音乐之声——midi制作原理
    Windows使用问题总结
    Chrome浏览器的使用
    搭建svn服务器
    Windows实用快捷键
    Phone文件备份
    9大背包第一弹 | 01背包
  • 原文地址:https://www.cnblogs.com/wyh0717/p/12939241.html
Copyright © 2020-2023  润新知