我是一名開始的Python程序員,我希望有人澄清以下行爲。Python中嵌套的Lambdas
我有以下代碼:
env = lambda id: -1
def add(id, val, myenv):
return lambda x: val if x == id else myenv(id)
test_env = add("a", 1, env)
test_env_2 = add("b", 2, test_env)
當我擡頭「了」 test_env
,它正常工作,但是當我看到它在test_env_2
它似乎已經由「B」重挫。至少,「b」是我可以從test_env_2
檢索到的。
所以,我已經讀了Scope of python lambda functions and their parameters等人,並且明白閉包在引用而不是值上操作,但我相信這不是完全相同的情況,因爲我使用的是字符串文字。有人能向我解釋這裏引擎蓋下發生了什麼嗎?
(是的,我知道,Python是不打算作爲一個功能性的語言,這只是研究。)
Python是多參數,但功能風格被認爲是pythonically! – Dario 2009-11-23 20:48:14