关于引用类型、值类型、不可变类型、可变类型

来源:5-3 值类型与引用类型

五阎

2023-04-02

感觉老师这里说得有点不对,这貌似就是访问并修改列表首地址,和通过下标访问并修改列表元素的区别。
我改成
a=[1,2]
b=a
a=[2,3]
print(b)
打印的是
[1,2]
类型的可不可变,指的是类型的成员属性可不可变
a=[1,2] //给一个变量赋值,a指向了[1,2]这个值的地址
b=a //把一个变量赋值给另一个变量,指向这个变量的地址。
a=[2,3] //把原有变量的地址改变了,第二个变量的地址其实没变,所以这是a,b已经是完全两个无关的对象了,这个时候谁变动都不会影响另一方

总结:
可变类型:有可以操作的成员变量
不可变类型:没有可以操作的成员变量
值类型:指向值(但其实还是指向值的首地址,只是这个值没有可以变动的成员属性)
引用类型指向:指向地址
在Python这里,可变类型=引用类型,不可变类型=值类型
只是课程的例子感觉不恰当,弄混了可变不可变指的是什么了

图片描述

写回答

1回答

7七月

2023-04-05

感觉这里变量引用和赋值,和可变不可变没有什么关系。这个总结是有些问题的,可变不可变以及值类型不应该这样来定义。可变不可变更多的是以是否开辟了新的内存地址来区别的

0
2
五阎
意思是,像我后面贴的代码一样,对象的属性可以变了(多了,少了,变了)就算可变,无关对象本身的id变不变是吗
2023-04-12
共2条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14446 学习 · 4438 问题

查看课程