我的用意是建立一个字典,其钥匙是原始的,其价值是零点功能,可以恢复。 (这是实施一个多国公司大型项目的一部分) 其中一些职能是非属地的,是人工设定和分配的。 这些工作罚款。 然而,另一些则似乎可以自动生成。
我的第一次尝试失败了:
>>> regs = [ a , b , c , x , y , z ]
>>> vals = {i : lambda: r for i, r in enumerate(regs)}
>>> [(k, vals[k]()) for k in vals.keys()]
[(0, z ), (1, z ), (2, z ), (3, z ), (4, z ), (5, z )]
缩略语 我再次试图孤立自己的价值:
>>> from copy import copy
>>> vals = {}
>>> i = 0
>>> for reg in regs:
... r = copy(reg) # (1)
... vals[i] = lambda: r
... i += 1
...
>>> [(k, vals[k]()) for k in vals.keys()]
[(0, z ), (1, z ), (2, z ), (3, z ), (4, z ), (5, z )]
(1) 我认为,这一步骤将产生一个独立变量,在进行管制时不会改变。 情况并非如此。
因此,这一尝试显然无所作为。 或许可以复制一下,看上去吗?
>>> s is s
True
>>> a = s
>>> b = copy(a)
>>> a is b
True
>>> from copy import deepcopy
>>> b = deepcopy(a)
>>> a is b
True
权利。 插图是一纸空文。 深层的斜体就是这样。 因此,Mlambda仍然提到正在更新的每个 lo体变量,造成这种ug。
We need a different approach. What if I save the variable I want to a static variable of the temporary function? That should work if each temporary function gets its own identity...
>>> vals = {}
>>> i = 0
>>> for reg in regs:
... def t():
... return t.r
... t.r = reg
... vals[i] = t
... i += 1
...
>>> [(k, vals[k]()) for k in vals.keys()]
[(0, z ), (1, z ), (2, z ), (3, z ), (4, z ), (5, z )]
Nope。 此时此刻,我 m忙地处理:
>>> vals = {}
>>> vals[0] = lambda: a
>>> vals[1] = lambda: b
......等等。 然而,这感觉是放弃,而且令人难以置信。 是否为完成这项任务提供了适当的onic? 毕竟,我通常热爱的神话之一是,我离开了人工点管理;我从未想象过,我祝愿它包括一整套点器工具!