我的问题的答案似乎非常简单:它不能这样做。但我相信它正在发生在我身上,它让我相当疯狂。因此,我非常感谢您的意见。
以下是这种情况。我正在写这个脚本,里面有以下功能:
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值。
任何见解都会受到高度赞赏: - )
答案 0 :(得分:0)
你做到了:
Code = ReferenceCode
因此两个引用都指向同一个对象。
答案 1 :(得分:0)
ReferenceCode
的值是一个列表。该列表有另一个名为Code
的引用。从这些引用中的任何一个更新列表都会更改one-any-only列表对象。修复是复制列表
Code = ReferenceCode[:]