0: 导语
》》a:对象不用想得太复杂,就是内存空间
》》b:不管是哪种对象,都有三种数据,意义重要。
》》c: a = 对象 还有 b =a 的本质
小提纲
Python是一门面向对象的语言?
对象实际上就是一个容器,专门用来存储数据
数值、字符串、布尔值、None都是对象
每个对象中都要保存三种数据?
id(标识)
type(类型)
value(值)
使用变量的本质是什么?
如果变量重新被赋值?
1: 对象
因为 Python是一门面向对象的语言,所以一切皆对象!
比如:
像我们之前学习的数值、字符串、布尔值、None都是对象
这个你知道。
问题来了,对象的本质是什么?
定义:对象就是内存中专门用来存储指定数据的一块区域,也叫容器
因为:程序运行当中,所有的数据都是存储到内存当中然后再运行的!
示意图:
(你肯定有一个疑问就是:这个图看起来跟变量一样,那是还有细节没画出来)
示意图:更多细节
2:每个对象中都要保存三种数据
分别是 id,type,value
id(标识)
> id用来标识对象的唯一性,对象的id就相当于人的身份证号一样,每一个对象都有唯一的id
含义:
》》a:id是由解析器生成的,在CPython中,id就是对象的内存地址
》》b:对象一旦创建,则它的id永远不能再改变
》》c:可以通过id()函数来查看对象的id
type(类型)
比如:int str float bool 。。。
这个你肯定知道
含义:
》》 a:Python是一门强类型的语言,对象一旦创建类型便不能修改
》》 b:类型用来标识当前对象所属的类型
》》c:通过type()函数来查看对象的类型
意义:类型决定了对象有哪些功能
value(值)
含义:
》》a: 值就是对象中存储的具体的数据
》》b: 对象分成两大类,可变对象 不可变对象
》》c: 可变对象的值可以改变, 不可变对象的值不能改变
练习:尝试自己画一下对象的内存结构。
3:变量和对象
前面对象是内存空间,已经了解,而且还有id,type,value属性。
那么以下代码在内存是什么情况?
a = 123
这个你懂的 a变量里面是什么?
对。是id 。
变量中存储的不是对象的值,而是对象的id(内存地址)
当我们使用变量时,实际上就是在通过对象id在查找对象
为什么是id呢?
假设如果不是,存的就是对象,如下,那么内存开销成问题。
所以,将对象赋值给变量,本质就是将该对象的id赋值过去。
给变量赋值另一个对象只是 将新对象id赋值给变量。
再看下面一段代码:
a = 10
b = a
那么b是多少?
运行结果如下。
A变量赋值给另一个变量B,本质是给B赋值A变量里面保存的对象id