我写了这个代码:蟒蛇noobie范围界定问题
x = 0
def counter():
x = 1
def temp(self):
print x
x += 1
return temp
试图测试,如果蟒蛇是词汇或动态范围。我的想法是,
y = counter()
y()
要么打印0或1,这将告诉我如何python作用域。但是,调用y会抛出异常,表示x未定义。我对Python的工作原理似乎有些根本性的缺陷。
有人可以解释这是如何工作的?是的,我知道这可以很容易地使用对象完成。我正试图探索在不使用对象的情况下赋予函数状态的想法。我以这种方式编写代码,因为上面翻译成像Scheme这样的词汇范围的语言肯定会起作用。
可能重复http://stackoverflow.com/questions/2009402/read -write-python-closures) – 2011-05-29 23:14:10