Python中的嵌套Lambda

我是一名初级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)

当我在test_env中查找“ a”时,它可以正常运行,但是当我在test_env_2中查找时,似乎已被“ b”所破坏.至少我可以从test_env_2中检索到“ b”.

因此,我已经阅读了Scope of python lambda functions and their parameters等,并且了解闭包是对引用而不是值进行操作的,但是我认为这与情况不完全相同,因为我使用的是字符串文字.有人可以向我解释一下这里发生的事情吗?

(是的,我知道Python并非旨在作为一种功能语言.这只是研究.)

解决方法:

我认为您只是将myenv(id)与myenv(x)混淆了.更改它,您将获得所需的输出.

上一篇:KVM嵌套虚拟化


下一篇:javascript-如何确定已读取所有文件并解决承诺