考虑下面的一段代码,它创建了几个函数的列表:
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
之类的问题,其中所有元素都引用同一个实体,但我的情况似乎不同。