zoukankan      html  css  js  c++  java
  • 13 Python学习之匿名函数和闭包

    匿名函数

    匿名函数又叫一句话函数,比较简单

    语法:

    lambda 参数: 返回值

    例1:

    ret = lambda a, b: a + b			# a, b是参数, a + b 是要返回的值
    print(ret(1, 2))
    

    3

    例2:

    ret = lambda a, b: a if a > b else b
    print(ret(3, 5))
    

    5

    闭包

    闭包的概念:

    1. 闭包只会出现在嵌套函数中

    2. 内层函数对外层函数非全局变量的引用(使用),就会形成闭包。被引用的非全局变量称为自由变量,这个自由变量会与内层函数产生一个绑定关系,当外层函数调用结束后,自由变量不会消失。

    闭包的作用:

    保证数据安全

    例1:

    # 嵌套函数
    def make_average():
        li = []         # 局部变量li
        def average(new_value):
            li.append(new_value)        # 内存函数调用外层函数非全局变量li
            print("列表li的内容是:", li)
            return sum(li)/len(li)
        return average
    
    ret = make_average()
    print(ret(10000))
    print(ret(11000))
    print(ret(12000))
    print(ret(9000))
    print(ret.__code__.co_freevars)     # 判断一个函数是不是闭包,查看自由变量即可
    

    运行结果是:

    列表li的内容是: [10000]
    10000.0
    列表li的内容是: [10000, 11000]
    10500.0
    列表li的内容是: [10000, 11000, 12000]
    11000.0
    列表li的内容是: [10000, 11000, 12000, 9000]
    10500.0

    自由变量

    ('li',)

  • 相关阅读:
    vue+vuex构建单页应用
    vue如何做分页?
    cookie和session的原理机制
    经常遇到js的面试题
    CSS浏览器兼容性问题解决方法总结
    前端性能优化----yahoo前端性能团队总结的35条黄金定律
    bom对象
    正则表达式
    JavaScript
    常见浏览器bug以及解决方法
  • 原文地址:https://www.cnblogs.com/zcf-blog/p/13433060.html
Copyright © 2011-2022 走看看