名称空间和作用域
名称空间:
--内置空间
全局--|
--全局空间:初函数外的空间
局部空间:可以理解为函数内部的空间
作用域:全局作用域和局部作用域
获取变量的优先级
局部>全局>内置
加载时的优先级
内置>全局>局部
查看以下代码输出是什么?
x=2
def foo():
print(x)
def fun():
x=1
foo()
fun()
答案:输出2
首先解释器从上往下进行执行,在foo函数在定义的时候,就已经获取到了x,之后fun调用foo函数的时候x就不再获取
从此问题可以读出结论,函数在定义阶段就已经决定了值,所以无论调用嵌套多层都会从定义阶段开始按获取优先级进行