具有内联函数的字典理解

Ale*_*azo 10 python lambda dictionary

我需要将函数存储在字典中,每个函数都取决于它的键,比方说,关键字1是关联的lambda函数lambda s: s * A[1].我尝试使用dict理解,但似乎内联函数结束时定义了循环的最后一个值.

d = {k, lambda s: s * A[k] for k in range(n)}  # e.g. n = 4
Run Code Online (Sandbox Code Playgroud)

之后,所有创建的lambda函数都用A[3]而不是A[0], A[1], A[2]和声明A[3].这段代码出了什么问题?

YS-*_*S-L 12

修复它的方法是将代码更改为:

d = {k: lambda s, k=k: s * A[k] for k in range(n)}
Run Code Online (Sandbox Code Playgroud)

如果没有绑定,Python会k在调用每个lambda时查找"当前" ,它始终n-1位于原始代码中.