奇怪的未知 lambda 语法

3
我知道这个做了什么(使 k 引用实际值而不是上一个值),但这种语法叫什么? 来自https://dev59.com/oHVD5IYBdhLWcg3wE3No#215326
funcs = [] 
for k in range(10):
     funcs.append(lambda k = k: k)

>>> funcs[7]()
7 # not 9
1个回答

6
语法没有特定的名称。这是将闭包绑定到它们的参数之一的方式; Python 闭包 是后期绑定的
这种语法是通过在创建lambda时将当前迭代器值作为默认参数传递来将其绑定到每个lambda的一种方式。由于默认参数在函数创建时被评估,所以该值会附着在函数上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接