Python字符串.format(* variable)

时间:2012-05-01 15:18:31

标签: python

我正在读一本书来阅读,它涵盖了以下示例。

somelist = list(SPAM)
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts)

除了在最后一行末尾使用的星星外,一切看起来都很清楚。这本书没有解释这个用法,我讨厌在没有完全理解的情况下继续前进。

非常感谢你的帮助。

4 个答案:

答案 0 :(得分:8)

*运算符(通常称为star或splat运算符)将iterable解包为函数的参数,因此在这种情况下,它等同于:

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

The python docs有更多信息。

答案 1 :(得分:5)

它是解包(有点)运算符的参数。

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

相同
fun(1, 2, 3)

(对于某些可调用的fun)。

函数定义中也有星号,这意味着“所有其他位置参数”:

def fun(a, b, *args):
    print('a =', a)
    print('b =', b)
    print('args =', args)

fun(1, 2, 3, 4) # a = 1, b = 2, args = [3, 4]

答案 2 :(得分:1)

关于单星号和双星号形式的全面explanation

答案 3 :(得分:0)

在函数内部使用

*意味着variable之后的*是可迭代的,并且在该函数内部提取。 这里'first={0}, last={1}, middle={2}'.format(*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