微信扫一扫打赏支持

python疑难问题---3、可变和不可变数据类型

python疑难问题---3、可变和不可变数据类型

一、总结

一句话总结:

python中不可变数据类型:比如 数值型、字符串型string和元组tuple
python中可变数据类型:比如 列表list和字典dict

 

1、python中不可变数据类型(比如数值型)的特点?

1、改变值,变量的地址会改变
2、值相同的两个变量,地址是一样的
a = 3
print(id(a)) #2077451392
a = 5
print(id(a)) #2077451424
b = 5
print(id(b)) #2077451424

 

 

2、python中可变数据类型(比如列表list)的特点?

a、改变值,变量的地址不会改变
b、值相同的两个变量,地址是不一样的
list1=[1,2,3,4,5]
print(id(list1)) #57361872
list1.append(6)
print(list1)
print(id(list1)) #57361872
print("---------------------------")
list2=[1,2,3,4,5]
print(id(list2)) #59656792
list2.append(6)
print(list2)
print(id(list2)) #59656792

 

 

 

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

博客对应课程的视频位置:3、可变和不可变数据类型
https://www.fanrenyi.com/video/32/295

 

1、不可变数据类型

"""
不可变数据类型:数值型、字符串型string和元组tuple

1、改变值,变量的地址会改变
不允许变量的值发生变化,如果改变了变量的值,
相当于是新建了一个对象,

2、值相同的两个变量,地址是一样的
而对于相同的值的对象,在内存中则只有一个对象(一个地址)

"""
a = 3
print(id(a)) #2077451392
a = 5
print(id(a)) #2077451424
b = 5
print(id(b)) #2077451424

 

 

 

2、可变数据类型

"""
可变数据类型:列表list和字典dict;

1、改变值,变量的地址不会改变
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,
只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,

2、值相同的两个变量,地址是不一样的
不过对于相同的值的不同对象,在内存中则会存在不同的对象,
即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,
这里不存在引用计数,是实实在在的对象。

"""
list1=[1,2,3,4,5]
print(id(list1)) #57361872
list1.append(6)
print(list1)
print(id(list1)) #57361872
print("---------------------------")
list2=[1,2,3,4,5]
print(id(list2)) #59656792
list2.append(6)
print(list2)
print(id(list2)) #59656792

 

 

系列博客对应课程视频地址:
1、遍历列表的三种方式-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/293
2、字典排序-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/294
3、可变和不可变数据类型-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/295
4、python文件处理-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/305
5、二维列表初始化-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/306
6、python中浅拷贝和深度拷贝-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/307
7、python中的with...as...-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/320
8、只有一个数的元组表示-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/343
9、Python类中call函数的作用-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/361
10、python遍历字典的几种方式-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/368
11、python内嵌for...in循环-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/369
12、python生成器-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/370
13、Python切片操作-范仁义-读书编程笔记
https://www.fanrenyi.com/video/32/377
 
 
posted @ 2020-06-23 00:33  范仁义  阅读(264)  评论(0编辑  收藏  举报