python - 函数输出正在改变,我知道为什么
问题描述
在下面的代码中,children 数组存储 treeNode 对象。我在 treeNode 对象中创建了函数变量,它存储该对象的函数,如下面的代码所示。下面的两个打印件打印的是不同的东西,但它们应该打印相同的输出,这让我对它发生的原因感到困惑。
attr_values = [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]
children_arr = [None]*5
for j in range(5): #create child node
children_arr[j] = treeNode()
f = lambda y: y==attr_values[j]
children_arr[j].function=f
print(children_arr[j].function(-2))
for k in range(5):
print(children_arr[k].function(-2))
print1:真假假假假假假假假假假真假
print2: 假 假 假 假 假 假 假 假 假 假 假
编辑:评论中的 a_guest 解决了我的问题。
解决方案
推荐阅读
- dart - streamController.add() 和 streamController.sink.add() 有什么区别?
- node.js - CORS 错误,我已搜索但找不到。节点.js
- string - 我们在屏幕上键入和显示的字母或符号的值类型是什么?
- sql - 列中是否存在失格显示记录
- c# - Swashbuckle.OData 中 OData 函数的复杂类型参数
- django - ElasticSearch_dsl 问题
- python - 使用 anaconda 环境在 MAC 上运行所有 python 文件
- hive - unix_timestamp 未按预期工作
- python - 电子邮件标头使用 ehtml url 编码获取文件名
- android - 无法在 cognito 身份池中保存社交媒体登录