名称空间
变量名和内存地址对应的表叫做名称空间
1.三种名称空间:
- 内置名称空间:启动就有不用自己定义,python解释器内置名字,print、max、min
- 全局名称空间:需要自己定义变量(执行python文件时启动,包括if判断得出的结果)
- 局部名称空间:函数内部定义的变量,调用后才有,调用结束失效。
2.三者的加载顺序:
内置——>全局——>局部
3.三者访问顺序:
局部——>全局——>内置
下面的例子帮助理解访问顺序:
x = 1
def f1():
x = 2
def f2():
x = 3
def f3():
x = 4
print(x)
f3()
f2()
f1()
输出:
4
x = 1
def f1():
x = 2
def f2():
x = 3
def f3():
print(x)
f3()
f2()
f1()
输出:
3
x = 1
def f1():
x = 2
def f2():
def f3():
print(x)
f3()
f2()
f1()
输出:
2
x = 1
def f1():
def f2():
def f3():
print(x)
f3()
f2()
f1()
输出:
1
def f1():
def f2():
def f3():
print(x)
f3()
f2()
f1()
这样执行会报错,此时要访问到内置名称空间也就是内置定义的变量,因为没有定义的变量也就没有名称空间