• python3函数进阶


    1.命名空间和作用域
    命名空间
        加载
            内置命名空间
                python解释器自带的变量和函数
                开启python解释器自动加载内置命名空间
            全局命名空间
                    程序从头到尾的自定义变量和函数
                    从头到尾加载
            局部命名空间
                    函数内部的自定义变量和函数(内嵌函数)
                    当函数被调用时,创建该函数的局部命名空间,当函数执行结束时,回收命名空间
        取值
            顺序:局部命名空间——>全局命名空间——>内置命名空间
    作用域
        全局作用域
            包含:内置命名空间、全局命名空间
        局部作用域
            局部命名空间
        打印全局作用域的值:print(globals())
        打印当前作用域的值:print(locals())
        在函数内部,对全局变量进行修改(自加等),需要加在函数内部加 global关键字定义变量
            对应不可变数据类型局部可以查看全局,不可以修改全局
    2.嵌套函数和作用域链
    嵌套函数
        函数的调用
        函数的定义
    作用域链
        由内到外
    nonlocal
        用在嵌套函数中,修改他上一次的局部变量,只用在局部变量
        在内部函数中,修改外部函数的变量
    3.函数名的本质
        指向一个内存地址,可以看作是变量
        赋值,既被引用
        当函数的参数、返回值
        可以当容器类型(可变数据类型)的参数
    4.闭包
        定义:嵌套函数,并且内部函数调用,外部函数的变量,内部函数是闭包
        判断闭包函数的方法:打印函数名.__closure__,有cell
    def f1():
        a = 1
    
        def f2():
            print(a)
        return f2
    
    
    res = f1()
    res()
  • 相关阅读:
    PY个树状数组
    PY 个板子计划【雾
    PY个欧拉筛
    【NOI2007】项链工厂 ——老题新做.jpg
    Min-Max 容斥的证明
    51nod 1963 树上Nim
    ●BZOJ 3566 [SHOI2014]概率充电器
    ●BZOJ 3640 JC的小苹果
    ●BZOJ 1444 [Jsoi2009]有趣的游戏
    ●Joyoi Dotp 驱逐猪猡
  • 原文地址:https://www.cnblogs.com/wt7018/p/10822727.html
Copyright © 2020-2023  润新知