我正在讀一本書閱讀,它涵蓋了下面的這個例子。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,因爲它們不是完全相同的東西 - 例如,您也可以使用生成器。 –
當然,我認爲集合和迭代是一樣的,但是這樣做更有意義。 –