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中__call__方法示例分析
Oct 11 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
python处理Excel xlrd的简单使用
Sep 12 Python
Python随机函数random()使用方法小结
Apr 29 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
numpy.random模块用法总结
May 27 Python
简单了解python变量的作用域
Jul 30 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
Python基础之操作MySQL数据库
May 06 Python
python turtle绘图
May 04 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 的异常处理程序
2014/06/22 PHP
PHP实现的日历功能示例
2018/09/01 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
JS 自执行函数原理及用法
2019/08/05 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
js实现随机点名功能
2020/12/23 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
Python 文件管理实例详解
2015/11/10 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python输出pdf文档的实例
2020/02/13 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
公司领导推荐信
2013/11/12 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
员工年终演讲稿
2014/01/03 职场文书
预备党员政审材料
2014/02/04 职场文书
转让协议书范本
2014/04/15 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
机械专业求职信范文
2014/07/15 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Python的这些库,你知道多少?
2021/06/09 Python
Java 死锁解决方案
2022/05/11 Java/Android