python可变与不可变数据类型详解

python可变与不可变类型

python中,变量名存储的值内存地址,访问变量名要通过变量名存储的内存地址去访问对应的值。

可变类型:指的是修改了变量值,变量名存储的内存地址不会改变,证明是在原来的内存空间上改变的值,而不是找了一个新的内存空间去存储值

不可变类型:指的是修改了变量值,变量名存储的内存地址会发生改变,证明是找了一个新的内存空间去存储值,而不是在原来的内存空间上进行的修改

# 不可变类型:int,float,str,bool
# 验证:
a = 1
print(id(a)) # 140713194935968
a = 2
print(id(a)) # 140713194936000
# 证明int类型修改了值后地址发生了改变,即int类型是不可变类型

b = 1.1
print(id(b)) # 1959099993424
b = 2.2
print(id(b)) # 1959099993360
# 证明float类型修改了值后地址发生了改变,即float类型是不可变类型

c = 'hello'
print(id(c)) # 2749644874480
c = 'world'
print(id(c)) # 2749644471216
# 证明str类型修改了值后地址发生了改变,即str类型是不可变类型
# 可变类型:list,dict
# 验证:
my_list = [1,2,3,4,5]
print(id(my_list)) # 1736810939712
my_list.append(6)
print(id(my_list)) # 1736810939712
# 证明list类型修改了元素之后地址没有发生变化,即list是可变类型

my_dict = {
    'name':'cuihua',
    'age':18
}
print(id(my_dict)) #2348975339584
my_dict['name'] = 'xiongda'
print(id(my_dict)) # 2348975339584
# 证明dict类型修改了元素之后地址没有发生变化,即dict类型是可变类型

总结:

可变与不可变实际上就是看修改了变量值之后,变量名的内存地址发不发生变化,若发生变化,则是不可变类型,不允许在原内存空间上进行值的修改操作;若没有发生变化,则是可变类型,允许在原来的内存空间上进行值的修改操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值