函数(命名空间和作用域)

命名空间:

内置命名空间:就是解释器一启动就可以使用的名字,存储在内置命名空间内,启动解释器时加载到内存;

全局命名空间:在程序从上到下被执行的工程中依次加载到内存,放置我们设置的所有变量名和函数名;

局部内存空间:就是函数内部定义的名字。当调用函数时会产生这个命名空间,随着函数执行结束,这个命名空间就消失了;

在局部:可以使用全局和内置命名空间的名字;多个函数拥有多个局部命名空间,互不共享。

在全局:可以使用内置空间的名字,但不能使用局部空间的名字。

在内置:不可以使用全局及局部空间的名字;

当全局与内置名字相同是,会使用全局的名字;

作用域:

全局作用域:方法globals(),显示所有全局作用域的名字。

局部作用域:方法locals(),显示局部作用域的名字。

对于全局不可变数据类型的变量,在局部可以查看,但不能直接修改;若修改,要在程序的开始添加global声明

函数的嵌套:

嵌套定义:内部函数可以使用外部函数的变量nonlocal关键字声明了一个上层局部变量,会影响当前函数最近一层局部变量

闭包:

嵌套函数,内部函数调用外部函数的变量;——closue——方法,查看是否是闭包,例如:

def outer()
    a=1
    def inner()
        print(a)
        return inner
inn=outer
inn()

  

 

猜你喜欢

转载自www.cnblogs.com/geng-xiaoqiaoliushui/p/10261466.html