编辑:看起来这是一个非常古老的"错误"或实际上,功能.例如,参见这封邮件
我试图了解Python范围规则.更准确地说,我认为我理解它们,但后来我在这里找到了这个代码:
x = "xtop"
y = "ytop"
def func():
x = "xlocal"
y = "ylocal"
class C:
print(x)
print(y)
y = 1
func()
Run Code Online (Sandbox Code Playgroud)
在Python 3.4中,输出是:
xlocal
ytop
Run Code Online (Sandbox Code Playgroud)
如果我用函数替换内部类,那么它合理地给出了UnboundLocalError
.你能解释一下为什么它在课堂上表现出这种奇怪的方式吗?选择范围规则的原因是什么?