• 匿名函数和闭包

    匿名函数

    什么是匿名函数

    一句话函数,比较简单.

    匿名函数的用法

    lambda(关键字) x,y(参数,一般为位置参数):x+y(返回值)
    匿名函数一般结合字典,内置函数.
    fun=lambda a:a+1
    print(fun(1))
    
    将fun中的1传给a, 冒号后为函数返回值

    闭包

    闭包存在的地方

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

    闭包的作用

    保证的数据的安全

    闭包的定义

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

    闭包的特点

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

    如何用代码判断是不是闭包:

    print(外层函数返回值().__code__.co_freevars)
    def wrapper():
        a = 1
        def inner():
            print(a)
        return inner
    ret = wrapper()
    
    print(ret.__code__.co_freevars)
    一些其他的函数内置方法:
        # 函数名.__code__.co_freevars 查看函数的自由变量
        print(avg.__code__.co_freevars)  # ('series',)
        # 函数名.__code__.co_varnames 查看函数的局部变量
        print(avg.__code__.co_varnames)  # ('new_value', 'total')
        # 函数名.__closure__ 获取具体的自由变量对象,也就是cell对象。
        # (<cell at 0x0000020070CB7618: int object at 0x000000005CA08090>,)
        # cell_contents 自由变量具体的值
        print(avg.__closure__[0].cell_contents)  # []
    相关文章
    相关标签/搜索
    4887铁算王中王开奖结果小说 新丰县| 南康市| 通海县| 灵台县| 正安县| 阜平县| 崇州市| 太仆寺旗| 屏南县| 揭东县| 定南县| 拜泉县| 酉阳| 民丰县| 随州市| 盱眙县| 历史| 横峰县| 镇宁| 大同市| 淅川县| 黄平县| 郴州市| 炎陵县| 富锦市| 宁晋县| 屏山县| 大田县| 那曲县| 呼玛县| 郑州市| 开阳县| 寿宁县| 大埔区| 石林| 屏边| 盐池县| http://fa.hz0j1r8vo.fun http://fa.hz0j2r0vo.fun http://fa.hz0j0r1vo.fun http://fa.hz0j0r2vo.fun http://fa.hz0j1r6vo.fun