使用lambdas进行Python列表理解

使用lambdas进行Python列表理解,第1张

使用lambdas进行Python列表理解

这个问题是经典的“陷阱”,是在lambda函数调用之前,不会查找

i
lambda函数中引用的内容。当时的值是结束时绑定到的最后一个值,即。
i``for-loop``2

如果绑定

i
lambda
函数定义中的默认值,则每个函数都
i
将成为局部变量,并且在 定义
而不是调用lambda时,将评估其默认值并将其绑定到该函数。

因此,当调用lambda时,

i
现在在 本地范围内 查找,并使用其默认值:

In [177]: bases = [lambda x, i=i: x**i for i in range(3)]In [178]: print([b(5) for b in bases])[1, 5, 25]

以供参考:

  • Python作用域和名称空间


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5645262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存