解释这个特定的python lambda表达式

时间:2019-01-23 18:12:14

标签: python lambda

我正在尝试学习lambda表达式,并遇到了以下问题:

funcs = {
        idx: lambda: print(idx) for idx in range(4)
        }

funcs[0]()

不明白funcs [0]是什么意思吗?为什么将索引设为0?

1 个答案:

答案 0 :(得分:0)

这是一个很酷的示例,展示了lambda函数如何绑定和作用域。正如丹尼尔所说,funcs是一个函数字典,其中包含四个元素(键0、1、2和3)。有趣的是,您在键0处调用了该函数,您期望用于创建该键的索引(idx)然后打印出来,您将得到0。但是我相信如果您运行此代码,您实际上打印了3个!什么!?!?因此,发生的事情是lambda函数在存储对该函数的引用时实际上并未绑定0值。这意味着,在循环结束时,变量idx与3相关联,因此,当您在位置0调用lambda函数时,它将查找对变量idx的引用并找到值{ {1}},然后将其打印出来。好玩:)

这更多地是指您的问题标题而不是测试……0是访问字典中具有键0的函数。