首页 > 解决方案 > 函数输出正在改变,我知道为什么

问题描述

在下面的代码中,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 解决了我的问题。

标签: python

解决方案


推荐阅读