dan*_*ben 3 python lambda closures functional-programming nested
我是一个初学python程序员,我希望有人澄清以下行为.
我有以下代码:
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)
Run Code Online (Sandbox Code Playgroud)
当我查看"a"时test_env,它的功能正常,但是当我查看它时,test_env_2似乎被"b"破坏了.至少,"b"是我可以从中检索的test_env_2.
所以,我已经阅读了python lambda函数的范围及其参数等,并且理解闭包对引用而不是值进行操作,但我相信这不是完全相同的情况,因为我使用的是字符串文字.有人可以向我解释一下这里有什么问题吗?
(是的,我知道Python并不是一种功能语言.这只是研究.)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |