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',)

  • 相关阅读:
    关于:nth-children 的几点总结
    JQ常用知识点总结(笔记篇)————
    ajax的数据处理
    快捷小技巧
    javascript获取select,checkbox,radio的值
    面试题
    canvas基础
    python中的线程之semaphore信号量
    PHP中$_POST和$_GET的用法
    php中echo、print、print_r、var_dump、var_export区别
  • 原文地址:https://www.cnblogs.com/zcf-blog/p/13433060.html
Copyright © 2011-2022 走看看