def multipliers():
return [lambda x: i * x for i in range(4)]
print([m(1) for m in multipliers()]) # [3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
为什么不是[0, 1, 2, 3]?无法理解。那么,出于某种原因,我们i = 3在所有 lambda 表达式中都有?为什么?
这是因为 Python 的后期绑定闭包。你可以通过写来解决这个问题:
def multipliers():
return [lambda x, i=i : i * x for i in range(4)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4747 次 |
| 最近记录: |