我正在读一本书来阅读,它涵盖了以下示例。
somelist = list(SPAM)
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts)
除了在最后一行末尾使用的星星外,一切看起来都很清楚。这本书没有解释这个用法,我讨厌在没有完全理解的情况下继续前进。
非常感谢你的帮助。
答案 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