假设我有这些代码行
index = 1
test = lambda t : t[index]+1
index = 0
print(test([5, 0]))
结果是 6,我希望结果是 1。如何在不编写 t[1]+1
(即使用变量)的情况下使 lambda 表达式内的索引变为静态?
最佳答案
Python 的闭包是后期绑定(bind)。这意味着在调用函数时会查找闭包中使用的变量值。
为了避免后期绑定(bind)效应,您可以使用带有默认参数的 lambda:
index = 1
test = lambda t, index=index: t[index]+1 # binds index at definition time
index = 0
print(test([5, 0])) # 1
关于python - 如何使 python lambda 表达式的索引静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150653/