元组通常用在使语句或者用户定义的函数能够安全的采用一组值的时候,即被
使用的元祖的值不会改变。元组也是一个序列。一个元组由数个逗号分隔的值组成,
#例如:
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>>u = t, (1, 2, 3, 4, 5) # 元组可以嵌套
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
tuple 函数:以一个序列作为参数并把它转换为元组。
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abs')
('a', 'b', 's')
>>> tuple((1,2,3))
(1, 2, 3)
元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可以没有括
号,不过经常括号都是必须的(如果元组是一个更大的表达式的一部分)。元组就像
字符串,不可改变:不能给元组的一个独立的元素赋值(尽管你可以通过联接和切
割来模拟)。还可以创建包含可变对象的元组,例如列表。
一个特殊的问题是构造包含零个或一个元素的元组:为了适应这种情况,语法
上有一些额外的改变。一对空的括号可以创建空元组;要创建一个单元素元组可以
在值后面跟一个逗号(在括号中放入一个单值不够明确),丑陋,但是有效。例如:
>>> empty = ()
>>> singleton = 'hello',
>>> singleton
('hello',)
语句 t = 12345, 54321, 'hello!'是元组封装(tuple packing)的一个例子:值
12345,54321 和'hello!'被封装进元组。其逆操作可能是这样:
x, y, z = t
这个调用等号右边可以是任何线性序列,称之为“序列拆封”非常恰当。“序列
拆封”要求左侧的变量数目与序列的元素个数相同。要注意的是可变参数(multiple
assignment)其实只是元组封装和序列拆封的一个结合。