我寫了這個代碼:蟒蛇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