lzb1001 发表于 2023-6-1 13:37:17

容器类型的值保存的是它们组合在一起的内存地址,那什么保存的是里面的实际值呢?

尽管Python没有给我们提供指针类型以及获取指针的方法,但是指针类型表示的引用这个概念在python中还是存在的,就是上面说到的列表、元组、字典等容器类型,这些容器类型的值保存的不是里面的实际值,而是它们组合在一起的内存地址

从上面这句话可知:

---列表、元组、字典等容器类型,这些容器类型的值保存的是它们组合在一起的内存地址

---……的值保存的是里面的实际值?

歌者文明清理员 发表于 2023-6-1 13:40:20

容器类型的值保存的是它们组合在一起的内存地址,而不是里面的实际值。这是因为这些容器类型是可变类型,其内部元素可以随时改变,因此将其保存为内存地址可以更好地管理和维护这些元素。如果希望获取容器类型中的具体值,需要使用索引、键等方法来访问容器中的元素,并通过这些方法来获取它们的实际值。

不过,元组是个例外。它是不可变类型,其内部元素一旦创建就不能被修改,因此Python会将元组的实际值直接保存在元组的对象中,而不是像可变类型那样保存它们的内存地址。因此,如果要访问元组中的具体值,可以通过索引来获取它们。与元组不同,列表和字典是可变类型,它们的值保存的是它们组合在一起的内存地址。感谢您的指正,希望我的回答对您有所帮助。

liuhongrun2022 发表于 2023-6-1 13:50:39

在Python中,虽然没有像C语言那样直接支持指针类型的机制,但是列表、元组、字典等容器类型确实可以看作是指针类型的抽象,它们内部存储的是引用(reference),也就是对象在内存中的地址,而不是对象本身的值。因此,我们可以通过容器类型对象的引用来访问它们所包含的真实值,这种“通过引用来获取值”的机制和指针类似,但是隐藏了底层内存管理的复杂性。

所以,上面的说法应该是:

---列表、元组、字典等容器类型,这些容器类型的值保存的是它们所包含的对象的引用,也就是对象在内存中的地址

---……的值并没有保存在容器类型中。要访问容器中的值,需要通过引用来获取。

lzb1001 发表于 2023-6-1 13:59:17

本帖最后由 lzb1001 于 2023-6-1 15:58 编辑

感谢大神的指点

就是说:

列表、元组、字典属于容器类型,因为容器类型保存的是它们组合在一起的内存地址,所以是可变类型,但其中的元组属于特例,它和整数、字符串等属于不可变类型,保存的直接是它们的值

这样理解包括下面这张表对吗?

页: [1]
查看完整版本: 容器类型的值保存的是它们组合在一起的内存地址,那什么保存的是里面的实际值呢?