Python可变数据类型与不可变数据类型

理解Python中内存机制与原理是学习Python关键的一环。我们通过Python内置函数 id() 来一步步进行说明。

1、不可变数据类型

我们先写了一串极其简单的代码:

a=3

好了,我们有了一个变量名a,这里让它来代表数字3。我们突然又想把a的值进行+1,好的,那我们可以这样做

a += 1

这两条代码扔给谁都可以无压力的理解。嗯,我们下面再做两件事情,Python为我们提供了id()的内置函数,可以用来显示当前a的地址,我们来试试看:

a = 3
print(id(a))
a += 1
print(id(a))

显示结果如何呢:

140723136032576
140723136032608
Process finished with exit code 0

观察结果,可以看到:我们得到了两个不同的地址。我们再做一些修改:

a = 3
c = a
print(id(a))
print(id(c))
a += 1
print(id(a))

结果:

140723133869888
140723133869888
140723133869920

我们进行一些总结:这里我们的变量都是整型,并且分别打印两次 id(a) ,发现两次a的地址并不相同,这就是Python的不可变数据类型。
Python中的不可变数据类型有int、string等等,这些类型在给变量进行第一次赋值操作时,并不是把当前a所表示的地址变为上图的数字3 ,而是让a存放3所在的内存地址。
不可变的意思就是说:我们在给a继续赋值时,不能改变a对应内存值的位置,而是将一个存放新数字的内存地址让a来表示,当使a自己增大时也会开辟新的内存来存放。

2、可变数据类型

我们学习了上面不可变数据类型的概念,来理解可变数据类型的概念时就很好理解了。
Python中的可变数据类型有列表和字典,对其中某个元素进行修改、(或)进行添加元素时,此时地址并不会发生变化。例:

ls = [1, 2, 3, 4]
print(id(ls))
ls[0] = 9
ls += [5]
print(ls)
print(id(ls))

结果:

2333278298632
[9, 2, 3, 4, 5]
2333278298632
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值