gpt4 book ai didi

python - 使用 lambda 深复制索引整数

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:51 24 4
gpt4 key购买 nike

func = []

for value in range(5):
func.append(lambda: print_index(value))


def print_index(index_to_print):
print(index_to_print)


for a in func:
a()

当我运行上面的代码时,输​​出是

4
4
4
4
4

为什么不是?

0
1
2
3
4

我该怎么做才能使它像上面那样。

我尝试导入副本并使用copy.deepcopy(index)。我可能没有工作,因为索引是一个整数。

lambda 是它不起作用的部分原因吗?

感谢您的帮助!

最佳答案

不太确定你想要实现什么,但它打印所有 4 的原因是因为 Python 使用变量的动态名称解析,即 value 的值code> 当函数执行时(而不是声明时)使用。

如果您确实需要一个函数来打印值,那么您需要创建一个闭包,这意味着在另一个函数内创建该函数,例如:

def make_closure(v):
return lambda: print_index(v)

func = []
for value in range(5):
func.append(make_closure(value))

现在输出:

In []:
for a in func:
a()

Out[]:
0
1
2
3
4

关于python - 使用 lambda 深复制索引整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com