Python闭包和单元格(封闭值)

Nei*_*l G 4 python lambda closures

什么是Python机制使它如此

[lambda: x for x in range(5)][2]()
Run Code Online (Sandbox Code Playgroud)

是4?

将x的副本绑定到每个lamba表达式的常用技巧是什么,以便上面的表达式等于2?


我的最终解决方案

for template, model in zip(model_templates, model_classes):
    def create_known_parameters(known_parms):
        return lambda self: [getattr(self, p.name)
                             for p in known_parms]
    model.known_parameters = create_known_parameters(template.known_parms)
Run Code Online (Sandbox Code Playgroud)

Lau*_*low 5

>>> [lambda x=x: x for x in range(5)][2]()
2
Run Code Online (Sandbox Code Playgroud)