鱼C论坛

 找回密码
 立即注册
查看: 2250|回复: 6

变量内存机制是怎么运作的啊?

[复制链接]
发表于 2015-10-31 09:53:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
当变量为字符和数字的时候,整个模块内就一个内存对应一个变量
>>> a=1
>>> print(a,id(a))
1 1523438032
>>> b=1
>>> print(b,id(b))
1 1523438032
>>> a="abc"
>>> print(a,id(a))
abc 5673440
>>> b="abc"
>>> print(b,id(b))
abc 5673440
当变量为元组,列表的时候,相同内容就可以存在不同内存地址里了
>>> a=[1,2,3]
>>> print(a,id(a))
[1, 2, 3] 32265520
>>> b=[1,2,3]
>>> print(b,id(b))
[1, 2, 3] 32266040
>>> a=(1,2,3)
>>> print(a,id(a))
(1, 2, 3) 33103920
>>> b=(1,2,3)
>>> print(b,id(b))
(1, 2, 3) 33104240
所以我想问的是:
当是整型和字符的时候:
a=1
b=1 相当于 b=a 都是直接复制地址变量么?
a=[1,2,3]
b=[1,2,3] 不等于 b=a 前边是新建变量,后边是地址复制,对么?

谁能把Python变量内存机制解释一下不啊 最好用堆栈及可变值和不可变值解释
数字,元祖,字符串,是不可变值
列表,字典,对象,函数是可变值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-31 21:27:02 From FishC Mobile | 显示全部楼层
建议不要用C语言的角度来理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-31 21:30:54 From FishC Mobile | 显示全部楼层
下边是自己的理解,没有科学依据考证……且看……第一个问题:Python把整数这些不可变类型存放在一个地儿,需要的时候引用;第二个问题是实例化两个对象丫,虽然他们长得一样,但还是两个不同对象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-31 21:33:48 From FishC Mobile | 显示全部楼层
第一个问题你可以这么理解:国内的网盘只要上边有你待上传的数据,就可以实现“秒传”,因为网盘只是给你的资源帖一个标签(变量);第二个问题:就要生产汽车,虽然配置造型什么鬼都一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-31 21:34:34 From FishC Mobile | 显示全部楼层
但他们仍然是不同的个体(对象)啊,你撞了一辆其他不受影响吧?

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-1 00:02:51 | 显示全部楼层
小甲鱼的二师兄 发表于 2015-10-31 21:34
但他们仍然是不同的个体(对象)啊,你撞了一辆其他不受影响吧?

研究了一下 现在明白了 引用和对象是分离的 整型和短字符是缓存的 只有一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-31 14:47:14 | 显示全部楼层
有点概念了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表