我在 Python 中遇到了一些非常奇怪的全局变量处理。我希望有人能解释和证明这些惊喜!
A)此代码按预期打印 10 :
def func():
print(a)
a = 10
func()
B)这段代码抛出了一个关于太早引用的异常:
def func():
print(a)
a += 1
a = 10
func()
C)但是此代码按预期打印 [10] :
def func():
print(a)
a.append(1)
a = [10]
func()
所以我可以收集到它的类型a
改变了它的范围,另外后来甚至还没有达到的声明改变了如何a
被看到。我知道我可以global a
在函数的开头使用,但它相当冗长。
谁能告诉我 Python 使用什么规则来处理其奇怪的作用域?