Discuss / Python / 可否理解为 tuple 本质存储的是类似指针的东西?

可否理解为 tuple 本质存储的是类似指针的东西?

Topic source

大梦shake

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

廖老师:结合 tuple 那一节关于不可变对象的讨论,我自己思考并实验了一下,是否可以这样理解:

tuple 实质存储的是类似指针的东西。例如 t = (1, 2, [3, 4]) ,虽然显示出来是 t 有 12[3, 4] 这三个值,但实质上在 python 的底层实现上, t 存储的是指向这三个值的指针,需要用值的时候才去读取指针指向的值。

例如,想要把 t 的值变为 (1, 2, [3, 4, 5])

  • 可以更改指针所指向的对象的值,如 t[2].append(5)。这样并不是改变了 tuple,因为指针指向没变。
  • 而通过索引赋值,如 t[2] = [3, 4, 5],则相当于把指针指向另一个对象,故会报错。

大梦shake

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

而 dict 和 set 的 hash 算法是根据对象的值来计算的,所以要求指针指象的对象的值也不可变。

不知我这样理解是否正确?


  • 1

Reply