内外函数同名变量问题
def outside():var = 5
def inside():
print(var)
var = 8
inside()
outside()
为什么这段代码会报错,我知道这是python屏蔽保护外面的那个var,但是里面的函数不是先执行print(var),再执行var = 8 吗,那不是在执行print(var)的时候还没有屏蔽外面的 var 吗,那不是就可以打印出来吗,为什么不可以呢?
函数定义过程不代表调用...
本帖最后由 Twilight6 于 2020-7-20 12:06 编辑
为什么这段代码会报错,我知道这是python屏蔽保护外面的那个var,但是里面的函数不是先执行print(var)?
再执行var = 8 吗,那不是在执行print(var)的时候还没有屏蔽外面的 var 吗,那不是就可以打印出来吗,为什么不可以呢?
没错,是先执行 print(var) 的,但是在 inside() 函数里面的作用域里,因为你 重新赋值了 var
导致触发屏蔽机制了,而这个屏蔽机制是在你运行代码前就会触发的
就像 Python 的语法错误、缩进错误,Python 会在运行代码前自动检测,而不是运行代码后
页:
[1]