函数的名称空间,作用域
名称空间(命名空间)
- 全局名称空间,存放的是当前这个py文件变量的一些对应关系(a:2,func:函数地址)
- 临时命名空间是函数被调用时临时存放函数内部的变量的对应关系,当函数结束时临时命名空间也会消失。
- 内置名称空间
- python源码给你提供的一些内置函数(print,input)
python分为三个空间
-
内置名称空间(builtins.py)
-
全局名称空间(当前py文件)
-
局部名称空间(函数,函数执行时才开辟)
-
加载顺序:
- 内置名称空间---》全局名称空间----》局部名称空间(函数执行时)
-
函数取值顺序(就近原则):
- 先从局部开始寻找变量,再从全部去找,再去内置去找
作用域
-
全局作用域:(全局作用域不可以引用局部作用域的变量)
- 内置名称空间,全局命名空间
-
局部作用域:(局部作用域可以引用全局作用域的变量)注:只可以引用
- 局部命名空间
-
局部作用域不可以改变全局作用域的变量原因:
1.python解释器的加载顺序是内置名称空间---》全局名称空间----》局部名称空间(函数执行时)
2.当python解释器读取到局部作用域时,发现你对一个变量进行修改的操作,解释器会认为你在局部已经定义过这个局部变量了,解释器就会从局部命名空间去寻找,但是局部并没有,所以报错。