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 strip()函数 介绍
May 24 Python
python使用win32com在百度空间插入html元素示例
Feb 20 Python
python小技巧之批量抓取美女图片
Jun 06 Python
详解python 发送邮件实例代码
Dec 22 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python装饰器常见使用方法分析
Jun 26 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python中树与树的表示知识点总结
Sep 14 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
python实现监听键盘
Apr 26 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 autoload机制的详解
2013/06/09 PHP
php生成二维码
2015/08/10 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python实现给微信公众号发送消息的方法
2017/06/30 Python
python实现简单日期工具类
2019/04/24 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
致800米运动员广播稿
2014/02/16 职场文书
签约仪式主持词
2014/03/19 职场文书
爱之链教学反思
2014/04/30 职场文书
2015大学生实训报告
2014/11/05 职场文书
商超业务员岗位职责
2015/02/13 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
Python基础之条件语句详解
2021/06/16 Python
服务器间如何实现文件共享
2022/05/20 Servers