我写了这段代码:
x = 0
def counter():
x = 1
def temp(self):
print x
x += 1
return temp
尝试测试 python 是词法范围还是动态范围。我的想法是
y = counter()
y()
应该打印 0 还是 1,这将告诉我 python 的作用域。但是,调用 y 会引发异常,指出 x 未定义。我对 Python 工作原理的理解似乎存在根本性的缺陷。
有人可以解释这是如何工作的吗?是的,我知道这可以很容易地使用对象来完成。我正在尝试探索在不使用对象的情况下赋予函数状态的想法。我这样写代码是因为上面翻译成像Scheme这样的词法范围语言肯定会起作用。