元组类型

元组是和列表非常相似的一种容器,它有小括号(())来定义。但功能上却有很大区别——元组是不可变类型。

不可变给元组带来什么影响

不可变并不是坏事,当我们把数据传递给一个不熟悉的API时,可以确保我们的数据不被改变(当然可以通过list()函数转换)。

元组也不是那么不可变

我们可以改变其内部包含的可变对象

其实我们在很多地方就用过元组了

  • 所有的多对象的、逗号分隔、没有明确用符号定义的,这些集合默认的都是元组:

      x, y = 1, 2
      x, y ## (1,2)
    
      'abc', 123, [456,234]  ## ('abc', 123, [456,234])
    
  • 函数返回的多对象

      def foo1():
          xxx
          return 0bj1, 0bj2  ## 相当于 return (0bj1, 0bj2)
    

单元素元组

(abc) ## 解释器以为小括号是四则运算中的符号

我们可以这样定义:

('abc',)