Learning Python 之 Python中的对象分类

Python中的对象之间有联系也有区分,如字符串和列表都可以执行切片、索引等操作,说明字符串和列表之间是有关系的,那么理清这些关系有助于我们更好的理解python。

我们知道,字符串是不可变类型(immutable)的序列(sequences):字符串不能够在内存中直接改变(例如:>>> 'python'[0] = m这个操作并不能够改变python这个字符串对象,不可变性是不可变类型的属性);字符串是有序的按位置排列的集合体(collections),可以通过偏移量访问其中的不同部分(序列类型的属性)。相同的类型之间有共同的属性,他们可以执行一些相同的操作,就像字符串和列表一样。

分类图:

这里写图片描述

类型

数字:(整数、浮点数、decimal、分数等)

支持加减等操作

序列:(字符串、列表和元组)

支持索引、切片、连接等

映射mappings:(字典)

支持通过键值索引等

值得注意的是,集合(sets)即不是序列,它是无序的;也不是映射,它不支持键值索引,它自成一类(a category unto themselves)。

可变性(Mutable?)

可变类型(Mutable)和不可变类型(Immutable)在Python是一个十分重要的概念。如果一个对象是不可变类型,那么就不能够直接改变他的值(可以通过赋值覆盖,等于创建了一个新的对象),否则会抛出错误,就像这样:

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

这两类的具体划分:

不可变类型:(数字、字符串、元组和forzensets)

该类型的对象都不支持直接改变内容或本身(cannot in-place change)。如果需要的话我们可以通过创建一个新对象覆盖原来的对象来实现。

可变类型:(列表、字典、集合和bytearray)

相反的,该类型的对象可以通过操作直接改变,而不需要创建一个新对象,尽管这类对象也支持复制,但可变类型的对象可以直接修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值