python基础 python变量和对象,以及内存存储。

python变量 和 对象

python变量

在python中变量是地址(在c语言中就是指 指针),比如说,有一个变量m,那么在内存中有一块区域名字是m,m是内存的标志,在这个区域中存储的 内容是一个 指针,我理解这是一个常量。
因为变量是指针,所以在python中变量作为指针可以指向任意一种 对象。

python对象

在python中对象分为可变对象和不可变对象。可变对象是引用类型,不可变对象是值引用

  1. 可变对象有 列表,字典,集合
  2. 不可变对象类型 有 数值类型,字符串类型,元组类型

又把可变对象称为 对象引用对象,我认为就是在这些以对象名为标识符的内存中存放的不是数据,而是指针(对象引用)。
举个例子:

list = [ 'asdf',1,2] 
  1. 在对象名list可以认为是一块内存的标志,一共三个元素,全部都是指针。第一个指针是 ‘asdf’ 这个字符串的地址。
  2. 第二个元素是数据1存放的地址。
  3. 第三个元素是数据2存放的地址。

那我可以这样认为,不可变对象是基本对象,可变对象是由基本对象构成的。可变对象被称为对象引用对象 是名副其实。

可变对象和不可变对象的性质

可变对象

 a=100
 b=100

在内存中先存一个100,然后在另一个名为变量 a 内存区存放a的地址。
然后又将100所在的地址,再给 变量b。
就是说 嗯… a指向对象100,b也指向 对象100。内存中只有一个对象100。

不可变对象

不可变对象的操作多是原地操作,增删改查 都是在原地。这个原地操作需要理解一下。

list = [ 'asdf',1,2] 

上面我的理解是在对象名为 list 的内存中存放一些地址。原地操作指的是这个 名为 list
的内存块地址不会变,但是内存块中存放的指针,是会改变的。

list = [ 'asdf',1,2] 
list[0]=123

上面的代码的运行结果是 list=[123,1,2]。
过程中,新开辟了一块空间存放数据123,然后把它的地址放在list对象的三个内存块中的第一个内存块。

综上,有了对可变对象和不可变对象的重新认识:
不可变对象是对象本身所在的地址下的内容 不容改变 ,只能重新 开辟空间。
可变对象:对象本身所在的地址下的内容是可以改变的。
我觉得 对象引用对象比不可变对象这个名字更合适。

以上是个人学习理解,有人看到有错误的请劳烦指出,我好修正我的理解。有个图就更好理解了。

加上两个图片,图是我从哪里搞来的忘了。。。不好意西。。。
在这里插入图片描述

在这里插入图片描述
[参考资料] (https://www.jb51.net/article/54544.htm)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值