疯狂的Python-19(不可修改的元组)

疯狂的Python-19(不可修改的元组)_第1张图片

一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


▶ 不可修改的元组

some_tuple = ("A", "tuple", "with", "values")
another_tuple = ([1, 2], [3, 4], [5, 6])

Output:

>>> some_tuple[2] = "change this"
TypeError: 'tuple' object does not support item assignment
>>> another_tuple[2].append(1000) #这里并没有报错
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000])
>>> another_tuple[2] += [99, 999]
TypeError: 'tuple' object does not support item assignment
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000, 99, 999])

我还以为元组是不可以修改的呢......

:bulb: 解释:

  • 引用自 https://docs.python.org/2/reference/datamodel.html

    不可变序列
    一个不可变序列对象在第一次定义后就不再可以修改。(如果这个对象中包含有对其他对象的引用,这些其他对象有可能是可变的或者可修改的;总之,只有直接引用的对象是不可以修改的。)

  • +=操作符会对左侧操作对象本身进行修改。但是元组是不允许修改的,所以会报错,但是实际上修改的是一个可变的列表(list),元组里保存的只是这个列表的地址,所以最终还是会修改成功。

你可能感兴趣的:(疯狂的Python-19(不可修改的元组))