这很好而且直接:
>>> ('a',) * 3
('a', 'a', 'a')
但我对tuple进行了一点实验,结果发现:
>>> 'a', * ('b', 'c')
('a', 'b', 'c')
>>> ('a',) * ('b', 'c')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
('a',) * ('b', 'c')
TypeError: can't multiply sequence by non-int of type 'tuple'
有人能解释一下*
是如何使元组在'a', * ('b', 'c')
行中连接的吗?
在此表达式中
'a', * ('b', 'c')
上有两件主要的事情
'a',
创建一个包含单个元素'a'
的元组* ('b', 'c')
使用扩展的可迭代拆包(PEP 3132(
因此,#2的结果用于从#1继续元组定义。为了显示一个更直观的例子,这是相同的想法
>>> 'a', *range(5)
('a', 0, 1, 2, 3, 4)