baicai37

可变数据类型:值发生改变时,内存地址不变,即id不变,证明在改变原值

不可变类型:值发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,是产生了新的值

数字类型:

#内存地址改变了,说明整形是不可变类型,浮点型也是一样

x=10
print(id(x))
x=20
print(id(x))
#执行结果
#140718135686256
#140718135686576

 

 

 字符串类型:

#内存地址改变了,说明字符串是不可变类型

x="egon"
print(id(x))
x="alex"
print(id(x))
#执行结果
#1644635563096
#1644635563600

 

元组类型:

#元组是不可变类型

>>> t1 = ("tom","jack",[1,2])
>>> t1[0]=\'TOM\' # 报错:TypeError
>>> t1.append(\'lili\') # 报错:TypeError
# 元组内的元素无法修改,指的是元组内索引指向的内存地址不能被修改
>>> t1 = ("tom","jack",[1,2])
>>> id(t1[0]),id(t1[1]),id(t1[2])
(4327403152, 4327403072, 4327422472)
>>> t1[2][0]=111 # 如果元组中存在可变类型,是可以修改,但是修改后的内存地址不变
>>> t1
(\'tom\', \'jack\', [111, 2])
>>> id(t1[0]),id(t1[1]),id(t1[2]) # 查看id仍然不变
(4327403152, 4327403072, 4327422472)

 列表类型:

# 对列表的值进行改变操作时,元素值本身发生变化,但是列表的内存地址不变,所以列表是可变数据类型

list1 = [\'tom\',\'jack\',\'egon\']
print(id(list1))
list1[2]="alex"
print(list)
print(id(list1))
list1.append("lili")
print(id(list1))
# 执行结果
# 1995513094728
# [\'tom\', \'jack\', \'alex\']
# 1995513094728
# [\'tom\', \'jack\', \'alex\', \'lili\']
# 1995513094728

 

 字典类型:

#对字典进行操作时,元素值改变,但是字典本身id不变,所以字典是可变数据类型

dic = {\'name\':\'egon\',\'sex\':\'male\',\'age\':18}
print(id(dic))
dic["age"]=19
print(dic)
print(id(dic))
# 执行结果
# 2459917843336
# {\'name\': \'egon\', \'sex\': \'male\', \'age\': 19}
# 2459917843336

集合类型:

#对集合进行操作时,元素值改变,但是集合本身id不变,所以集合是可变数据类型

data = {\'tom\',\'jack\',\'egon\'}
print(id(data))
data.add("alex")
print(data)
print(id(data))
data.discard("tom")
print(data)
print(id(data))
# 执行结果
# 2246875583880
# {\'alex\', \'jack\', \'tom\', \'egon\'}
# 2246875583880
# {\'alex\', \'jack\', \'egon\'}
# 2246875583880

数据类型总结:

 

分类:

技术点:

相关文章: