我是 python 新手,我试图了解它如何处理列表解包方面的副本与引用。我有一个简单的代码片段,正在寻找关于它为何如此运行的解释。
arr = [1, 2, 3, 4]
[one, two, three, four] = arr
print(id(arr[0]), arr[0])
print(id(one), one)
one = 5
print(id(one), one)
Run Code Online (Sandbox Code Playgroud)
输出是:
(16274840, 1)
(16274840, 1)
(16274744, 5)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么one当我尝试修改其内容时突然移动到不同的内存位置。
我正在使用 python 版本 2.7.18。
这是我的第一篇文章,所以如果我不遵守准则,我提前道歉。如果我违反了这些规定,请告诉我。
感谢您的所有回复。他们帮助我简化了对这段代码的误解:
var = 1
print(id(var), var)
var = 5
print(id(var), var)
Run Code Online (Sandbox Code Playgroud)
带输出:
(38073752, 1)
(38073656, 5)
Run Code Online (Sandbox Code Playgroud)
询问列表并解压它们完全是令人困惑的。
这很好地解释了: http://web.stanford.edu/class/archive/cs/cs106a/cs106a.1212/handouts/mutation.html