Python 可变数据类型和不可变数据类型 - Python零基础入门教程

本文详细介绍了Python中的可变数据类型与不可变数据类型的定义及区别,包括整数、浮点数、布尔值、字符串、元组等不可变类型,以及列表、字典等可变类型。通过实例演示了不同类型变量在内存中的地址变化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

Python 数据类型分别有整数 int / 浮点数 float / 布尔值 bool / 元组 tuple / 列表 list / 字典 dict;

其中数据类型分为两个大类,一种是可变数据类型;一种是不可变数据类型,两者有什么区别呢?

一.关于内存

在讲解 Python 可变数据类型和不可变数据类型之前需要先普及一下内存相关的简单知识!

Python 编程的时候,代码中的变量实际上都是存储在计算机内存中,当然这里指的内存在计算机中是虚拟的,你看不见摸不着!每一个内存都有一个对应的内存地址,讲到这里需要再次介绍一个 Python 内置函数 id,该函数可以用于获取内存地址!获取内存地址方法如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 可变数据类型和不可变数据类型.py
@Time:2021/3/20 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

if __name__ == "__main__":

    a = 10
    b = 20
    print("a的数据类型是:{} 地址:{}".format(type(a),id(a)))
    print("b的数据类型是:{} 地址:{}".format(type(b), id(b)))

'''
输出结果:
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(元组)

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 可变数据类型和不可变数据类型.py
@Time:2021/3/25 23:00
@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)

#元组的数据不能修改,否则会报错

'''
输出结果:
整形变量a修改之前地址:1994744256
整形变量a修改之后地址:1994744576
************************************************************
浮点数变量a修改之前地址:2713286559088
浮点数变量a修改之后地址:2713286559136
************************************************************
字符串变量a修改之前地址:2713269294224
字符串变量a修改之后地址:2713269272112
************************************************************
布尔值a修改之前地址:1994252480
布尔值a修改之后地址:1994252448
************************************************************
'''

3.可变数据类型

可变数据类型:list(列表)、dict(字典)

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 可变数据类型和不可变数据类型.py
@Time:2021/3/25 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

#列表
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)


'''
输出结果:
列表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.可变数据类型更改值后,内存地址不发生改变;不可变数据类型更改值后,内存地址发生改变;**

四.猜你喜欢

  1. Python 简介
  2. Python Pycharm Anacanda 区别
  3. Python2.x 和 Python3.x,如何选择?
  4. Python 配置环境
  5. Python Hello World 入门
  6. Python 代码注释
  7. Python 中文编码
  8. Anaconda 是什么?Anconda 下载安装教程
  9. Pycharm 提示:this license **** has been cancelled
  10. Pycharm 设置开发模板/字体大小/背景颜色
  11. Python 列表 list
  12. Python 元组 tuple

未经允许不得转载:猿说编程 » Python 可变数据类型和不可变数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿说编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值