【发布时间】:2022-01-19 12:54:09
【问题描述】:
考虑如下代码sn-p:
# directorys == {'login': <object at ...>, 'home': <object at ...>}
for d in directorys:
self.command["cd " + d] = (lambda : self.root.change_directory(d))
我希望创建一个包含以下两个函数的字典:
# Expected :
self.command == {
"cd login": lambda: self.root.change_directory("login"),
"cd home": lambda: self.root.change_directory("home")
}
但看起来生成的两个 lambda 函数完全一样:
# Result :
self.command == {
"cd login": lambda: self.root.change_directory("login"),
"cd home": lambda: self.root.change_directory("login") # <- Why login ?
}
我真的不明白为什么。你有什么建议吗?
【问题讨论】:
-
诸如将外部变量绑定到部分 lambda 之类的问题是 ruby 并非无处不在的副作用。
标签: python loops anonymous-function