zoukankan      html  css  js  c++  java
  • 闭包

    闭包

    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)
    
  • 相关阅读:
    40 修改了机器名,portal重装后,还需要做什么?
    39 路径分析小练习
    38 空间查询小练习
    面向对象一些概念简述
    Js函数基本介绍
    JS中的变量和数据类型
    js基础语法
    Css样式优先级
    对响应式布局的理解和认知
    关于Flex布局
  • 原文地址:https://www.cnblogs.com/wyh0717/p/12939241.html
Copyright © 2011-2022 走看看