一旦不可变序列类型的对象不能改变 创建。 (如果对象包含对其他对象的引用,则为这些对象 其他对象可能是可变的并且可能会被更改;然而 由不可变对象直接引用的对象的集合 无法改变。)
虽然原始引用的第一部分是可以理解的,但我还是没有得到最后一句话。我如何理解短语:"由不可变对象直接引用"?
答案 0 :(得分:1)
解释这个问题的最好方法可能就是一个例子。
>>> a = [1, 2, 3]
>>> b = (a, a)
b
是一个元组 - 一个不可变的序列。但是,它包含的对象是可变的列表。
可以修改集合中的可变对象:
>>> a.append(4)
>>> b
([1, 2, 3, 4], [1, 2, 3, 4])
但是,无法更改a
中存在哪些对象,因为它是不可变的。 a
的第一个和第二个元素将始终引用相同的列表,并且无法更改它。
答案 1 :(得分:1)
这意味着不可变tuple
可以引用可变对象,例如一个list
,可以更改,而元组本身不变。
my_list = [1, 2, 3]
my_tuple = ('a', my_list)
print(my_tuple)
>>> ('a', [1, 2, 3])
my_list.append(4)
print(my_tuple)
>>> ('a', [1, 2, 3, 4])