猿问

python 可变对象的疑惑

最近学习Python的时候遇到了一点疑惑, 一时不知道该怎么理解, 如下:

使用版本为python3.6

假设有下面三段代码:

l = [1]
print(id(l))
l.append(2)
print(id(l))

上面这段代码可以发现地址不变

l = [1]
print(id(l))
l += [2]
print(id(l))

上面这段代码可以发现地址仍旧不变

l = [1]
print(id(l))
l = l + [2]
print(id(l))

上面这段代码发现地址变了

本人的理解仅限于知道列表是可变对象, 但是上面三段代码却不知道该如何解释其中的原理, 感觉还是有一些地方没有理解清楚.

望能有前辈解答, 不胜感激


沧海一幻觉
浏览 681回答 1
1回答

守候你守候我

三种方式内部原理是不同的,+= 和 append都是原地操作,即直接向列表中加元素,而列表是引用类型,只是一个地址,所以他的id()一样。最后一种方式两个列表组合成为一个新的列表返回,新列表肯定指向不同的地址,所以id变了
随时随地看视频慕课网APP

相关分类

Python
我要回答