python可变类型与不可变类型

学习版本3.5.2

python的基础类型数值、字符串和元组都是不可变类型,列表和字典时可变类型

1.Number、字符串

id(1) #4297546560
id(2) #4297546592
a = 1
id(a) #4297546560
a = 2
id(a) #4297546592
b = 1
id(b) #4297546560
str1 = 'hello'
id(str1) #4314969344
str2 = 'hello'
id(str2) #4314969344
str1 = 'world'
id(str1) #4314969512
当你给a赋值为1的时候,相当于给内存中的1加上了一个名叫a的标签,改变a的值的时候就像是把名叫a的标签撕下来贴在了内存中的2上面,你不能通过赋值操作把内存中的1改为其它的数值。

2.元组

a = (1,2,3)
id(a) #4314976760
a = (2,3,4)
id(a) #4314977048
b = (1,2,3)
id(b) #4314976760
b[1] #2
b[1] = 3
#TypeError: 'tuple' object does not support item assignment

对于元组整体的赋值情况与数值和字符串一致,元组的元素是不允许修改的

3.列表和字典

a = [1,2,3]
id(a) #4314937672
b = a
id(b) #4314937672
b = [1,2,3]
id(b) #4314937928
a[1] #2
a[1] = 4
a #[1, 4, 3]
id(a) #4314937672
c = {'a':1,'b':2}
id(c) #4303008136
d = c
id(d) #4303008136
d = {'a':1,'b':2}
id(d) #4314963144
c['a'] #1
c['a'] = 3
c #{'b': 2, 'a': 3}
id(c) #4303008136

对于列表和字典,a=[1,2,3]与b=[1,2,3]在内存中存在了两个位置,对它们进行修改就是对对应位置内存里面存的数据进行了修改,b=a相当于给a对应的地址贴上了b的标签。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值