Discuss / Python / 有个疑惑?

有个疑惑?

Topic source

既然元组不可变的话 那么:

a = (1,2,3,4) a += a print(a)

输出结果是:

(1,2,3,4,1,2,3,4)

这么说的话,从另外一角度来说,a这个变量的元组还是变了。 可以这样说吗?

mark 求教

西木心亘

#3 Created at ... [Delete] [Delete and Lock User]

你这里相当于 a = a + a 即重新初始化了a

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

变量是指向对象的,你的代码相当于:

a = (1,2,3,4) b += a a = b

原来的(1,2,3,4)并没有变,只是因为a不再指向他,而是指向了新的(1,2,3,4,1,2,3,4)

你可以用另一个变量跟踪看看内容是否变了:

a = (1,2,3,4) x = a a += a print(a) print(x)

西木心亘

#5 Created at ... [Delete] [Delete and Lock User]

雪峰老师,这个应该算是重新初始化了吧?我不太懂您说的“原来的(1,2,3,4)并没有变”。

G好大的鱼

#6 Created at ... [Delete] [Delete and Lock User]

是不是这样只是改变了映射关系? tuple并没有变。


  • 1

Reply