为什么我的变量的值会被在Python中触及它的行改变?

时间:2016-11-12 23:51:34

标签: python-2.7

我的问题的答案似乎非常简单:它不能这样做。但我相信它正在发生在我身上,它让我相当疯狂。因此,我非常感谢您的意见。

以下是这种情况。我正在写这个脚本,里面有以下功能:

    def ReduceReferenceCode():

        Code = ReferenceCode

        if E == 7:
            CritLimit = 2
        elif E == 4:
            CritLimit = 1

        if D < CritLimit:
            for i in [4, 5, 6]:
                if Code[i] >= CritLimit:
                    print ReferenceCode
                    Code[i] = Code[i] - CritLimit
                    print ReferenceCode
                    break
        else:
            Code[7] = Code[7] - CritLimit
        Code[9] = 1

        return Code

我的 ReferenceCode 变量的值 - 它作为参数传递给带有sys.argv的程序 - 在两个打印命令之间进行了更改。我的主要功能打印 ReferenceCode 和我的简化代码以进行比较,这是存储在代码

中的值

这是节目的输出:

    [1, 4, 3, 4, 9, 7, 2, 0, 6, 7, 9, 2]
    [1, 4, 3, 4, 7, 7, 2, 0, 6, 7, 9, 2]
    The reference code is [1, 4, 3, 4, 7, 7, 2, 0, 6, 1, 9, 2] and the reduced reference code is [1, 4, 3, 4, 7, 7, 2, 0, 6, 1, 9, 2]

两个变量不应该具有相同的值,我真的不明白为什么代码 [i]上的操作影响 ReferenceCode &#39; s值。

任何见解都会受到高度赞赏: - )

2 个答案:

答案 0 :(得分:0)

你做到了:

Code = ReferenceCode

因此两个引用都指向同一个对象。

答案 1 :(得分:0)

ReferenceCode的值是一个列表。该列表有另一个名为Code的引用。从这些引用中的任何一个更新列表都会更改one-any-only列表对象。修复是复制列表

Code = ReferenceCode[:]