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