我在 Python 中遇到过一些非常奇怪的全局变量处理方式。我希望有人能够解释并证明这些惊喜的合理性!
A) 此代码按预期打印 10:
def func():
print(a)
a = 10
func()
B) 此代码抛出有关过早引用 a 的异常:
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 使用什么规则来处理其奇怪的作用域?
第二个实例rebinds a
,因此编译器会为其生成本地访问。另外两个只读a
,因此执行正常的全局范围搜索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)