鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: sadautumn

大家好,咨询一个关于Python的基础问题,求大神解答!

[复制链接]
发表于 2016-3-20 12:35:28 | 显示全部楼层
不懂 小白路过留痕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-4 09:50:18 | 显示全部楼层
表示疑问犹在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 19:02:05 | 显示全部楼层
这个是内存分配机制的不同. int占位比较少所以每个int值占的内存位置是不会变的,而列表之类的占内存空间太大,所以分配的的内存位置是暂时的,没有指向是会被清除,这样导致了在列表中a,b是个标签,而在int时,1,2,3是标签,你可以理解为1=a. 看下面代码.
>>> a=1
>>> b=a
>>> id(a)
1692034432
>>> id(b)
1692034432
>>> id(1)
1692034432 //1这个数所在的内存位置
>>> a+=1
>>> a
2
>>> id(a)
1692034464
>>> id(b)
1692034432
>>> id(2)
1692034464 //1这个数所在的内存位置
>>> id(a)
1692034464
>>> a-=1
>>> a
1
>>> id(a)
1692034432
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 19:17:48 | 显示全部楼层
非常有趣可以从这个问题算出每个int的占的位数,比较好玩.对我们这些非计算机专业人员还是蛮有用的.
//int 32位以内时占的内存,
>>> id(1)
1692034432
>>> id(2)
1692034464
>>> id(3)
1692034496
>>> id(4)
1692034528
//当整数大于32位的时候int也分配的也是暂时内存了.
>>> 2**32
4294967296
>>> id(4294967294)
58470704
>>> id(4294967295)
58470672
>>> id(4294967296)
50731728
>>> id(4294967297)
58470672
>>> id(4294967297)
58470672
>>> id(1)
1692034432
>>> id(4294967297)
58470736
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-23 00:04:59 | 显示全部楼层
在python中对象分为可变对象和不可变对象
        可变对象:           对象的内容可以改变
        不可变对象: 对象的内容不可以改变


可变对象的常见类型有: list, dict
不可变对象的常见类型: 数值, str, tuple

我现在只会这么多

2.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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