首页 > 编程语言 > 详细

Python初学笔记之可变类型、不可变类型

时间:2019-07-02 09:07:26      阅读:138      评论:0      收藏:0      [点我收藏+]

python中

可变类型:

  • 列表 list
  • 字典 dict

不可变类型:

  • 数字型:int、float、complex、bool、long
  • 字符型 str
  • 元组 tuple

 

id(i):通过id查看变量的内存地址

 

引用

  在Python中,变量也称为:对象的引用。变量存储的就是对象的地址

  变量位于:栈内存

  对象位于:堆内存

 

Python是动态类型语言

  变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型

Python是强类型语言

  每个对象都有数据类型,只支持该类型支持的操作。

 

下面通过代码来比较一下区别。定义变量之后打印出对应的内存地址。

i = 2
print(id(i))    # id:140713329648304

j = 2
k = 2
print(id(j))    # id:140713329648304
print(id(k))    # id:140713329648304

i = 3
print(id(i))    # id:140713329648336

我们发现,当创建 i=2,j=2,k=2时,他们的内存地址都是相同的。

它们内存的分配其实是如图的:

技术分享图片

当我给i赋新的值3的时候,其实是给了i一个新的内存地址,这个地址的值对应堆内存中一个新的对象,

可见,即时现在i的值变等于3,原来的对象还是存在的,i的改变的并不是因为对象的值改变了,而是i引用了一个新的对象,因此我们说int是不可变类型。

技术分享图片

a = [1, 2, 3]   
print(id(a))    # id:2479232279176

b = [1, 2, 3]   
print(id(b))    # id:2479232279240

a.append(88)    
print(id(a))    # id:2479232279176

 可变类型:在使用append方法后,变量的地址没有改变,它修改的是堆内存中对应id地址上的值。

 当然,再新建一个对象赋值的时候,即使值是一样的,它一样会改变变量的地址指向。

Python初学笔记之可变类型、不可变类型

原文:https://www.cnblogs.com/jszfy/p/11117744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!