意外的别名行为

时间:2018-06-10 18:41:04

标签: alias

有人可以向我解释为什么下面的代码会输出我的作品吗?

firstlist = [1,2,3,4,5,6,7,7]
alias = firstlist
firstlist = firstlist*2
print(firstlist)
print(alias)

输出:

[1,2,3,4,5,6,7,7,1,2,3,4,5,6,7,7]

[1,2,3,4,5,6,7,7]

为什么将firstlist乘以2并更新更新不会反映在' alias'中。我的印象是因为'别名'并且' firstlist'指向相同的值,对#firstlist'所做的任何更改都是应该通过别名来反映'同样。

1 个答案:

答案 0 :(得分:0)

这一行有两件事:

firstlist

您将firstlist乘以2,然后将其分配给一个恰好firstlist的变量 - 这不是就地修改。因此,aliasfirstlist指向不同的对象。

相反,如果您要修改>>> firstlist = [1,2,3,4,5,6,7,7] >>> alias = firstlist >>> firstlist.extend(firstlist) >>> print(firstlist) [1, 2, 3, 4, 5, 6, 7, 7, 1, 2, 3, 4, 5, 6, 7, 7] >>> print(alias) [1, 2, 3, 4, 5, 6, 7, 7, 1, 2, 3, 4, 5, 6, 7, 7] ,例如,通过附加它,您会看到两个变量仍然指向同一个对象,并且具有相同的值:

pubspec.yaml