我知道这是做什么的(让k
引用当时的实际值而不是最后一个值)但是这个语法叫什么?
来自https://stackoverflow.com/a/215326/2375119
funcs = []
for k in range(10):
funcs.append(lambda k = k: k)
>>> funcs[7]()
7 # not 9
答案 0 :(得分:6)
语法没有特别的名称。它是将闭包绑定到其论点的方法之一; Python closures are late binding
该语法是一种通过在创建lambda时将其作为默认参数传递将当前iteratee值绑定到每个lambda
的方法。由于默认参数在创建函数时进行评估,因此该值会粘贴到函数中。