同名时,局部变量会“遮蔽”(shadow)全局变量
在函数内部,如果你定义了一个与全局变量同名的局部变量,在该函数内,这个名字就指向局部变量,全局变量被暂时“隐藏”。
func() 内部用 locals() 查看局部变量globals() 查看全局变量(包括函数外部的 a = "aaa")这样就能清晰看到两个作用域中同名变量 a 的不同值了!
def func(): a = 3 print("函数内 a =", a) print("局部变量表(locals):", locals()) print("全局变量表(globals)中 'a' 的值:", globals()['a']) a = "aaa" func() print("全局 a =", a) print("全局变量表(顶层 globals):", list(globals().keys())) # 只打印键名避免太长
正确理解:同名时,局部变量会“遮蔽”(shadow)全局变量