python - 如何使 python lambda 表达式的索引静态

标签 python indexing lambda

假设我有这些代码行

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/

相关文章:

Python:作为 namedtuple 对象的 Lambda 函数?

python - Python 中 '\0\0' 的含义?

python - Django如何关闭警告

python - 如何在 Sublime Text 3 中使用 python

PHP 编写的 OpenGrok 替代品

java - 如何使用流或 lambda 简化我的代码

python - 谷歌驱动器 API : The user has not granted the app error

javascript - 按单击元素的索引从数组中弹出值

mysql - Mysql存储函数和groupwise min

c# - lambda 表达式中的 .Sum()