一.名称空间
在python解释器开始执行之后,就会在内存里开辟一个空间.遇到变量时,就把变量名和值之间的关系记录下来.但是在定义函数的时候,只要不调用函数,解释器是不会把函数内的变量加载到名称空间的.执行函数时,随着函数执行完毕,函数里的变量也会被清空.
def func(): a = 10 b = 20 print(a) #如果不调用func 函数里面的a 和 b 都不会创建 #如果调用 函数里面的 a b 才会被创建 func() print(a) # a不存在
1.名称空间分类
1.全局名称空间 : 在py文件中,函数外声明的变量都属于全局名称空间
2.局部名称空间 : 在函数中声明的变量属于局部名称空间
3.内置名称空间 : 在python解释器为使用人提供的名字 eg : list tuple 等等
2.加载顺序
内置名称空间 -> 全局名称空间 -> 局部名称空间(函数被执行的时候)
3.取值顺序
局部名称空间 -> 全局名称空间 -> 内置名称空间
二.作用域
作用域就是作用范围.可以分为全局作用域和局部作用域
1.全局作用域
包含内置名称空间和全局名称空间. 在文件整个位置都可以使用(遵循从上到下逐行执行)
可以使用globals() 查看全局作用域的内容
2.局部作用域
只在局部名称空间,也就是在函数内部.
可以使用locals()查看局部作用域内容