python中数字是否为可变类型


Posted in Python onJuly 08, 2020

本文以Python3为例,包括六种数据类型:

1、数字(Number):
        int整型
        long长整型
        float浮点数
        complex复数
        布尔值(0和1)
2、字符串(String)
3、列表(List)
4、元组(Tuple)
5、字典(Dictionary)
6、集合(Set)

通过id函数查看变量i的内存地址进行验证(使用hex(id(i)) 可以查看16进制的内存地址)

不可变类型:Number、String、Tuple

对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。

对于不可变类型int,无论创建多少个不可变类型,只要值相同,都指向同个内存地址。

例如Number:

>>> number1 = 123
>>> id(number1)
8790928028112
>>> number2 = 123
>>> id(number2)
8790928028112
>>> number3 = 321
>>> id(number3)
49143760
>>>

可以看到执行 i += 1 时,内存地址都会变化,因为int 类型是不可变的。

>>> i = 5
>>> id(i)
8791205700368
>>> i += 1
>>> id(i)
8791205700400
>>>
>>> j = i
>>> id(j)
8791205700400
>>> j
6
>>>

可变类型:List、Dictionary、Set

对可变数据类型重新赋值,并没有创建新的对象。

例如List:

>>> list1 = [1,2,3,4,5]
>>> id(list1)
49307976
>>> list2 = [1,2,3,4,5]
>>> id(list2)
49307784
>>> list1.append(123)
>>> list1
[1, 2, 3, 4, 5, 123]
>>> id(list1)
49307976
>>>

如果执行list1=list2,因为list1、list2指向同个内存地址,而list1、list2的类型都是List,可变类型,对list1、list2任意一个List进行修改,都会影响另外一个List的值。

>>> list1
[1, 2, 3, 4, 5, 123]
>>> id(list1)
49307976
>>>
>>> list1 = list2
>>> id(list1)
49307784
>>> id(list2)
49307784
>>> list2
[1, 2, 3, 4, 5]
>>> list2.append(456)
>>> list1
[1, 2, 3, 4, 5, 456]
>>> list2
[1, 2, 3, 4, 5, 456]
>>>

总而言之:

不可变类型是指向值(Value),值不变,则对象不变;值变,则对象变。

可变数据类型是指向名字(Name),名不变,则对象不变;名变,则对象变。

内容扩展:

Python中可变类型和不可变类型的数据?

  1. 可变类型有list,dict.不可变类型有string,number,tuple.
  2. 当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存。
  3. 不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制过去,对这块新开辟的内存中的值进行操作。

到此这篇关于python中数字是否为可变类型的文章就介绍到这了,更多相关python中数字是不可变类型吗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python正则表达式re模块详细介绍
May 29 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
详解Python if-elif-else知识点
Jun 11 Python
对python的输出和输出格式详解
Dec 08 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
Python实现自动签到脚本功能
Aug 20 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
如何让python的运行速度得到提升
Jul 08 #Python
opencv 图像加法与图像融合的实现代码
Jul 08 #Python
opencv 图像轮廓的实现示例
Jul 08 #Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 #Python
用opencv给图片换背景色的示例代码
Jul 08 #Python
python文件及目录操作代码汇总
Jul 08 #Python
Python预测2020高考分数和录取情况
Jul 08 #Python
You might like
php和javascript之间变量的传递实现代码
2012/12/19 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
Django-imagekit的使用详解
2020/07/06 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
Jar包的作用是什么
2014/03/30 面试题
如何提高SQL Server的安全性
2016/07/25 面试题
爱护公共设施演讲稿
2014/09/13 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
先进集体申报材料
2014/12/25 职场文书
维稳承诺书
2015/01/20 职场文书
2015年教研组工作总结
2015/05/04 职场文书
毕业生学校组织意见
2015/06/04 职场文书
委托书范本格式
2019/04/18 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Golang 并发编程 SingleFlight模式
2022/04/26 Golang