可变类型与不可变类型

复习:

1 标签与地址的关系

变量类似于贴在抽屉中的一个标签,真正的内容是放在抽屉里的。

标签的作用类似于地址,只不过地址是给机器看的,标签是给人看的。获取变量的真正地址用id()来进行。

2 基础的数据类型

基础的数据类型有 数字类型和字符串,数字类型包含整型和浮点型

例如数字:1, 2, 3.0, 3.5

字符串:"1", "2", '3', '4.0', 'man'

3 较复杂的数据类型:列表list

a = [3, 5, 7,10]

4 创建变量的过程

a = 2

b = 3

c = "men"

d = [3, 5, 7, 10]

就是在类似一堆抽屉中放入对应的值,并贴上标签,如上面的变量对应的标签为a, b, c,d

二、不可变类型

像数字,字符串这样的基础数据类型,一旦值定下来了,对应的内存地址就固定了,我们将值对应内存地址不变的数据类型,称为不可变类型

例如:

a = 2
b = 2
c = "men"
d = "men"
print(id(a),id(b))
print(id(c),id(d))

修改a, b, c, d的值

a = 3
b = 3
c = 'dog'
d = 'dog'
print(id(a), id(b))
print(id(c), id(d))

可以发现a, b的地址是同一个地址,c,d地址也指赂同一个地址

修改了a,b,c,d的值,对应的地址也改变了。

 也就是说对于不可变类型,其值一旦改变,对应的地址也就改变了

三、可变类型

像数组这样较复杂的数据类型,修改内部的值,变量对应的地址不会改变,这样的数据类型称为可变类型

a = [2, 3, 5, 10]
print(id(a), a)
a[0] = 9.9
print(id(a), a)

可以看到虽然修改了a[0]元素的值,a对应地址是没有改变的。

b = [1, 2, 3]
print(id(b), b)
c = [1, 2, 3]
print(id(c), c)

可以看到虽然b, c的值是一样的,但b,c对应的地址是不同的。

print(id(b[0]), id(c[0]))
print(id(b[1]), id(c[1]))
print(id(b[2]), id(c[2]))

可以看到虽然b, c的地址不一样,但其内部的元素的地址是一样的,也就是说最终也是存的不可变的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的麦田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值