lambda函数列表,元素以某种方式被链接?

时间:2018-04-23 01:35:19

标签: python list lambda reference

考虑下面的一段代码,它创建了几个函数的列表:

CREATE TABLE `detum` (
`idu` int(12)
,`nik` varchar(10)
,`nama` varchar(35)
,`kdstore` int(4)
,`nmstore` varchar(40)
,`tglmsk` date
,`shift` varchar(4)
,`start` time
,`end` time
,`event` varchar(2)
,`ln` varchar(1)
,`jkerja` decimal(13,4)
,`tjkerja` decimal(13,4)
,`jlembur` decimal(13,4)
,`jlembur1` decimal(15,5)
,`jlembur2` decimal(14,4)
,`jlembur3` decimal(14,4)
,`jlembur4` decimal(14,4)
,`tl` decimal(15,1)
,`gaji` int(7)
,`periode` varchar(7)
,`acc` varchar(1)
);

预期输出为func = lambda a,x: a*x func_list = [] for i in range(3): __tmp = lambda x: (i+1)*x func_list.append(__tmp) x = 2 print func_list[0](x) print func_list[1](x) print func_list[2](x) ,但实际输出为2,4,6。不知何故,列表的第一个和第二个元素被更改为第三个元素的值!我不确定为什么会这样?我已经看到人们做6,6,6之类的问题,其中所有元素都引用同一个实体,但我的情况似乎不同。

0 个答案:

没有答案