奇怪的未知lambda语法

Are*_*ski 3 python syntax lambda

我知道这是做什么的(使得k引用实际值而不是最后一个值)但是这个语法叫什么?来自/sf/answers/15072851/

funcs = [] 
for k in range(10):
     funcs.append(lambda k = k: k)

>>> funcs[7]()
7 # not 9
Run Code Online (Sandbox Code Playgroud)

Mos*_*oye 6

语法没有特别的名称.这是将闭包绑定到其参数的方法之一; Python 闭包是后期绑定.

该语法是一种lambda在创建lambda时将当前iteratee值作为默认参数传递给当前的iteratee值的方法.由于在创建函数时会计算默认参数,因此该值会粘贴到函数中.