我正在读一本书阅读,它涵盖了下面的这个例子。Python字符串.format(*变量)
somelist = list(SPAM)
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts)
一切似乎从明星除了明确在最后一行的末尾被使用。这本书没有解释这种用法,我讨厌在没有完全理解的情况下取得进展。
非常感谢您的帮助。
我正在读一本书阅读,它涵盖了下面的这个例子。Python字符串.format(*变量)
somelist = list(SPAM)
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts)
一切似乎从明星除了明确在最后一行的末尾被使用。这本书没有解释这种用法,我讨厌在没有完全理解的情况下取得进展。
非常感谢您的帮助。
这是参数拆包(有点)操作符。
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]
的*
操作,通常被称为星或图示操作,解压可迭代到函数的参数,所以在这种情况下,它等同于:
'first={0}, last={1}, middle={2}'.format(parts[0], parts[1], parts[2])
The python docs有更多的信息。
*
在函数内部中使用时是指该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
全面explanation约单双星号形式。
将元组更改为集合,因为它适用于任何迭代。希望你不介意:) –
@NiklasB。这是真的,我正在考虑这个案例,但事实上,通常你可以使用任何迭代器。实际上,我会将collection更改为iterable,因为它们不是完全相同的东西 - 例如,您也可以使用生成器。 –
当然,我认为集合和迭代是一样的,但是这样做更有意义。 –