为什么我们可以更改元组中的字典值?

Why can we change a dictionary value inside a tuple?

我正在学习 python,但我对元组感到困惑。如果元组中的元素不可变,那么我如何才能更改元组中存在的字典值?

例如

test_dict = {'a':2,'b':3}

test_tup = (test_dict,3)

test_tup[0]['b'] = 4

如果我打印 test_tup,则 b 值更新为 4:

>>> test_tup
({'a': 3, 'b': 4}, 3)

提前致谢。

请记住,python 中的每个值都是 对对象的引用

因此,与其将您的元组视为 字典的元组 ,不如将其视为 对某物的引用的元组 ,其中那些东西是字典。字典不是 inside 元组的情况。它们独立存在,元组的元素引用它们。

现在,这样想,元组是不可变的。您无法更改其 structure/size,也无法更改其元素,这意味着您无法将一个引用替换为另一个引用。

但是,所引用的对象可以是可变的。它们独立存在,与元组引用无关。

If elements in tuple are immutable, then how am I able to change them?

它们不是一成不变的。元组是。

你的元组只包含对字典的引用,它无法跟踪你对其中的内容所做的任何更改(它会怎样?)。

根据不变性,您不能这样做:

test_tup[0] = {}

这是更改元组持有的引用