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()
原文地址:https://www.cnblogs.com/wt7018/p/10822727.html