Python string.format(*变量)

Python string.format(*变量),python,Python,我正在读一本书,书中包括了下面的例子 somelist = list(SPAM) parts = somelist[0], somelist[-1], somelist[1:3] 'first={0}, last={1}, middle={2}'.format(*parts) 除了最后一行末尾使用的星号外,其他一切似乎都很清楚。这本书没有解释这个用法,我讨厌在没有完全理解的情况下继续前进 非常感谢您的帮助。通常称为star或splat运算符的*运算符将iterable解压到函数的参数中,因此在

我正在读一本书,书中包括了下面的例子

somelist = list(SPAM)
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts)
除了最后一行末尾使用的星号外,其他一切似乎都很清楚。这本书没有解释这个用法,我讨厌在没有完全理解的情况下继续前进


非常感谢您的帮助。

通常称为star或splat运算符的
*
运算符将iterable解压到函数的参数中,因此在本例中,它相当于:

'first={0}, last={1}, middle={2}'.format(parts[0], parts[1], parts[2])
有更多信息。

这是参数解包(类似)操作符

args = [1, 2, 3]
fun(*args)

fun(1, 2, 3)
(对于一些可调用的
乐趣

函数定义中还有星号,它表示“所有其他位置参数”:


*
当在函数中使用时,意味着
*
后面的
变量
是一个iterable,它是在该函数中提取的。 这里的
“first={0},last={1},middle={2}”。格式(*parts)
实际上表示:

'first={0}, last={1}, middle={2}'.format(parts[0],parts[1],parts[2])
例如:

 >>> a=[1,2,3,4,5]
 >>> print(*a)
 1 2 3 4 5

关于单星号和双星号格式的综合说明。

将元组更改为集合,因为它适用于任何iterable。希望你不介意:)@NiklasB。这是真的,我在考虑这个案例,但实际上,一般来说,你可以使用任何iterable。事实上,我会将collection更改为iterable,因为它们不是完全相同的东西-例如,您也可以使用生成器。当然,我认为collection与iterable是相同的,但这样做更有意义。感谢各位的快速回复。非常有用。
 >>> a=[1,2,3,4,5]
 >>> print(*a)
 1 2 3 4 5