zoukankan      html  css  js  c++  java
  • Python 闭包 自由变量

    理解:封闭的东西:保证数据的安全

    #平均收盘价 方案一		数据是不安全的
    l1 = []
    def make_average(new_value):
        l1.append(new_value)
        total = sum(l1)
        average = total / len(l1)
        return average	
    *************************************************************
    #方案二:闭包
    def make_average():
        l1 = []	#自由变量
        def aver(new_value):		#闭包
            l1.append(new_value)
            total = sum(l1)
            average = total / len(l1)
            return average
        return aver
    avg = make_average()
    avg(100000)
    avg(110000)
    

    闭包定义

    1.闭包只能存在嵌套的函数中

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

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

    也就是 自由变量不会在内存中消失 。

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

    如何判断一个嵌套函数 是不是闭包:

    def make_average():
        l1 = []	#自由变量
        def aver(new_value):		#闭包
            l1.append(new_value)
            total = sum(l1)
            average = total / len(l1)
            return average
        return aver
    avg = make_average()
    #__code__.co_freevars 查看函数中自由变量的方法 如果有自由变量 即为闭包
    avg.__code__.co_freevars #  查看函数的自由变量(l1,)
    
  • 相关阅读:
    Flask websocket
    Vuex
    Web框架的原理
    node.js
    nginx负载均衡实验
    nginx与location语法详解
    git安装与初始化
    Flask 中的 Render Redirect HttpResponse
    jQuery快速入门
    前端知识总结--css用div画环形圆
  • 原文地址:https://www.cnblogs.com/pandaa/p/12053291.html
Copyright © 2011-2022 走看看