python可变数据类型和不可变数据类型-创新互联

python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,其中数据类型分为两个大类,一种是可变数据类型;一种是不可变数据类型,两者有什么区别呢?

成都创新互联-专业网站定制、快速模板网站建设、高性价比淇滨网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式淇滨网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖淇滨地区。费用合理售后完善,十年实体公司更值得信赖。

python 可变数据类型和不可变数据类型

一.关于内存

在讲解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的数据类型是:地址:1994744256

b的数据类型是:地址:1994744576

分析下上面代码:定义了局部变量a和b,python会自动给局部变量分配内存,分别用来存放整数10和20,并通过内置函数id()获取内存地址!关于内存这里不做过多介绍,你需要记住的是:每一个内存都有一个一个对应的内存地址,分配的内存在程序结束时由系统自动回收!

python 可变数据类型和不可变数据类型

二.可变数据类型和不可变数据类型

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(另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:python可变数据类型和不可变数据类型-创新互联
本文链接:http://scjbc.cn/article/psgci.html