python 类方法调用一次自增1_Python 1 - 内置类型 - 序列(1)

Python 1 - 内置类型 - 序列(1)

Python 中提供了 3 种基本的序列类型:list、tuple、range。大家可能对这3中类型都比较熟悉。

一般我们认为 tuple类型是不可以改变的list,当然,这在日常使用中,并没有什么不对,表现出来的属性也能验证这个说法,但是,在Python的底层实现当中,tuple 与 list 是完全不同的两个类型,后面我们会对他们的不同之处加以分析。

语句range(n)大家在for in 语句中经常使用,一般作为index来遍历其他类型的迭代。我们在使用的时候一般认为range(start, stop, step)方法产生了一个以start开始,stop结束,以step为间隔的列表。但是实际上,range也是一种基本的序列类型,它也并不会返回一个我们认为的list。

可变序列

不可变序列类型与可变序列的区别就是,可变类型没有实现对 hash() 内置函数的支持。这种对hash()的支持,可以让 tuple作为dict的键存在。

像list,bytearray就是可变序列。

不可变序列

不可变序列类型的对象一旦创建就不能再改变:如果对象包含了对其他对象的引用,其中的可变对象就是可改变的;但是一个不可变对象所直接引用的对象集是不能改变的。

像 str,tuple,bytes都是不可变对象。相应的不可变序列就有 tuple 和 range,它们都是可以被hash()所使用的。

关于可变对象和不可变对象官方给出的例子。

我们打算对元组的元素进行自增运算,所以我们使用了 +=。

>>> a=(1,2)

>>> a[0] += 1

Traceback (most recent call last):

File "", line 1, in

TypeError: 'tuple' object does not support item assignment

报错信息告诉我们,元组对象不支持元素赋值。

发生异常的原因是显而易见的:

1 会与对象 a_tuple[0] 相加,而该对象为 (1),得到结果对象 2,

但当我们试图将运算结果 2 赋值给元组的 0 号元素时就将报错,因为我们不能改变元组的元素所指向的对象。

在表层之处,以上增强赋值语句所做的大致是这样:

>>> result = a_tuple[0] + 1

>>> a_tuple[0] = result

Traceback (most recent call last):

...

TypeError: 'tuple' object does not support item assignment

我们打算给元组中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值