python的可变类型和不可变类型

Python有六种数据类型:数字类型、字符串类型、列表类型、元组类型、字典类型和集合类型

其中不可变类型包括三种:数字类型、字符串类型和元组类型

剩余三种为可变类型:列表类型、字典类型和集合类型

可变类型:

  • 可以修改对象的的值,修改后对象的内存地址不变(变量与内存地址链接:常量、变量、内存)
  • 可变类型包括:列表、字典、可变集合
>>> s = [1, 2, 3, 4, 5]
>>> id(s)
2115225773704
>>> s[2] = "a"
>>> s
[1, 2, 'a', 4, 5]
>>> id(s)
2115225773704
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> d = {"name": "bone", "age": 26}
>>> id(d)
2115223112656
>>> d["age"] = 25
>>> d
{'name': 'bone', 'age': 25}
>>> id(d)
2115223112656
>>> a = {1, 2, 3}
>>> id(a)
2115225769128
>>> a.add(4)
>>> id(a)
2115225769128
>>> a
{1, 2, 3, 4}

不可变类型

  • 值变了,内存地址就变了,等于重新定义
  • 在尝试修改对象元素时,实际上是重新开辟了内存空间来存储的
  • 不可变类型有:数值、元组、字符串、不可变集合
  • 对于不可变类型的对象,他们都没有涉及到修改的方法,尝试使用就会报错
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> a = (1,2,3)
>>> a[1] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> a = "bone"
>>> a[1: 3] = "x"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> a = frozenset({1, 2, 3})
>>> a
frozenset({1, 2, 3})
>>> id(a)
2115225768456
>>> a.add(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值