python 可变数据类型和不可变数据类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 可变数据类型和不可变数据类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4556字,纯文字阅读大概需要7分钟。
内容图文
![python 可变数据类型和不可变数据类型](/upload/InfoBanner/zyjiaocheng/646/5b2d3e0cf3e842a3828c32d0775c354d.jpg)
python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,其中数据类型分为两个大类,一种是可变数据类型;一种是不可变数据类型,两者有什么区别呢?
一.关于内存
在讲解python可变数据类型和不可变数据类型之前需要先普及一下内存相关的简单知识!
在python编程的时候,代码中的变量实际上都是存储在计算机内存中,当然这里指的内存在计算机中是虚拟的,你看不见摸不着!每一个内存都有一个对应的内存地址,讲到这里需要再次介绍一个python内置函数id(),该函数可以用于获取内存地址!获取内存地址方法如下:
1 2 3 4 5 6 | if __name__ == "__main__":
a = 10 b = 20 print("a的数据类型是:{} 地址:{}".format(type(a),id(a))) print("b的数据类型是:{} 地址:{}".format(type(b), id(b))) |
输出结果:
1 2 | a的数据类型是:<class 'int'> 地址:1994744256 b的数据类型是:<class 'int'> 地址:1994744576 |
分析下上面代码:定义了局部变量a和b,python会自动给局部变量分配内存,分别用来存放整数10和20,并通过内置函数id()获取内存地址!关于内存这里不做过多介绍,你需要记住的是:每一个内存都有一个一个对应的内存地址,分配的内存在程序结束时由系统自动回收!
二.可变数据类型和不可变数据类型
python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,这是python开发中最常用的数据类型!
1.可变数据类型和不可变数据类型区别
可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址不发生改变,那么这个数据类型就是 可变数据类型。
不可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址发生了改变,那么这个数据类型就是 不可变数据类型。
总结:可变数据类型更改值后,内存地址不发生改变;不可变数据类型更改值后,内存地址发生改变。
2.不可变数据类型
不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com
@File:python_variable.py @Time:2019/10/24 21:25
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """
#整形变量 a = 10 print("整形变量a修改之前地址:{}".format(id(a))) a = 20 print("整形变量a修改之后地址:{}".format(id(a))) print("***"*20)
#浮点数变量 a = 10.5 print("浮点数变量a修改之前地址:{}".format(id(a))) a = 20.2 print("浮点数变量a修改之后地址:{}".format(id(a))) print("***"*20)
#字符串变量 a = "hello" print("字符串变量a修改之前地址:{}".format(id(a))) a = "world" print("字符串变量a修改之后地址:{}".format(id(a))) print("***"*20)
#布尔值变量 a = False print("布尔值a修改之前地址:{}".format(id(a))) a = True print("布尔值a修改之后地址:{}".format(id(a))) print("***"*20)
#元组的数据不能修改,否则会报错 |
输出结果:
1 2 3 4 5 6 7 8 9 10 11 12 | 整形变量a修改之前地址:1994744256 整形变量a修改之后地址:1994744576 ************************************************************ 浮点数变量a修改之前地址:2713286559088 浮点数变量a修改之后地址:2713286559136 ************************************************************ 字符串变量a修改之前地址:2713269294224 字符串变量a修改之后地址:2713269272112 ************************************************************ 布尔值a修改之前地址:1994252480 布尔值a修改之后地址:1994252448 ************************************************************ |
3.可变数据类型
可变数据类型:list(列表)、dict(字典)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #列表 a = list() print("列表a修改之前地址:{}".format(id(a))) a.append(20) print("列表a修改之后地址:{}".format(id(a))) a.append(False) print("列表a修改之后地址:{}".format(id(a))) a.append("hello") print("列表a修改之后地址:{}".format(id(a))) print("***"*20)
#字典 a = dict() print("字典a修改之前地址:{}".format(id(a))) a["name"]="zhangsan" print("字典a修改之后地址:{}".format(id(a))) a["age"]=18 print("字典a修改之后地址:{}".format(id(a))) a["sing_dog"]=True print("字典a修改之后地址:{}".format(id(a))) print("***"*20) |
输出结果:
1 2 3 4 5 6 7 8 9 10 | 列表a修改之前地址:2067294579016 列表a修改之后地址:2067294579016 列表a修改之后地址:2067294579016 列表a修改之后地址:2067294579016 ************************************************************ 字典a修改之前地址:2067294527992 字典a修改之后地址:2067294527992 字典a修改之后地址:2067294527992 字典a修改之后地址:2067294527992 ************************************************************ |
三.重点总结
1.不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)
2.可变数据类型:list(列表)、dict(字典)
3.可变数据类型更改值后,内存地址不发生改变;不可变数据类型更改值后,内存地址发生改变
猜你喜欢:
转载请注明:猿说Python » python可变数据类型和不可变数据类型
内容总结
以上是互联网集市为您收集整理的python 可变数据类型和不可变数据类型全部内容,希望文章能够帮你解决python 可变数据类型和不可变数据类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。