函数(命名空间和作用域)
命名空间:
内置命名空间:就是解释器一启动就可以使用的名字,存储在内置命名空间内,启动解释器时加载到内存;
全局命名空间:在程序从上到下被执行的工程中依次加载到内存,放置我们设置的所有变量名和函数名;
局部内存空间:就是函数内部定义的名字。当调用函数时会产生这个命名空间,随着函数执行结束,这个命名空间就消失了;
在局部:可以使用全局和内置命名空间的名字;多个函数拥有多个局部命名空间,互不共享。
在全局:可以使用内置空间的名字,但不能使用局部空间的名字。
在内置:不可以使用全局及局部空间的名字;
当全局与内置名字相同是,会使用全局的名字;
作用域:
全局作用域:方法globals(),显示所有全局作用域的名字。
局部作用域:方法locals(),显示局部作用域的名字。
对于全局不可变数据类型的变量,在局部可以查看,但不能直接修改;若修改,要在程序的开始添加global声明
函数的嵌套:
嵌套定义:内部函数可以使用外部函数的变量;nonlocal关键字声明了一个上层局部变量,会影响当前函数最近一层局部变量
闭包:
嵌套函数,内部函数调用外部函数的变量;——closue——方法,查看是否是闭包,例如:
def outer() a=1 def inner() print(a) return inner inn=outer inn()