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实现多行注释的另类方法
Aug 22 Python
Python基础之函数用法实例详解
Sep 10 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python中的自省(反射)详解
Jun 02 Python
Python实现识别手写数字大纲
Jan 29 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
Python smtplib实现发送邮件功能
May 22 Python
利用Python如何批量更新服务器文件
Jul 29 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python中format()格式输出全解
Apr 12 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 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_SELF的安全问题
2009/09/05 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python 字典dict使用介绍
2014/11/30 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python基础之入门必看操作
2017/07/26 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python做反被爬保护的方法
2019/07/01 Python
python cumsum函数的具体使用
2019/07/29 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
python 写一个水果忍者游戏
2021/01/13 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
医学专业自荐信
2014/06/14 职场文书
学校师德师风整改措施
2014/10/27 职场文书
检讨书怎么写
2015/01/23 职场文书
语文教师个人工作总结
2015/02/06 职场文书
全国助残日活动总结
2015/05/11 职场文书
法定代表人免职证明
2015/06/24 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书