【发布时间】:2017-04-09 13:42:08
【问题描述】:
我知道这是做什么的(使k 指的是实际值而不是最后一个值)但是这个语法叫什么?
来自https://stackoverflow.com/a/215326/2375119
funcs = []
for k in range(10):
funcs.append(lambda k = k: k)
>>> funcs[7]()
7 # not 9
【问题讨论】:
我知道这是做什么的(使k 指的是实际值而不是最后一个值)但是这个语法叫什么?
来自https://stackoverflow.com/a/215326/2375119
funcs = []
for k in range(10):
funcs.append(lambda k = k: k)
>>> funcs[7]()
7 # not 9
【问题讨论】:
语法没有特别的名字。这是将闭包绑定到其参数的一种方式; Python closures are late binding.
该语法是一种将当前迭代值绑定到每个 lambda 的方法,方法是在创建 lambda 时将其作为默认参数传递。由于在创建函数时会评估默认参数,因此该值会保留在函数中。
【讨论】: