拆包* args來我不知道爲什麼變量last
是5
當我這樣做爲了在Python
first, *rest, last = 1,2,3,4,5
我想分配進入由左到右,從而 *rest
將[2,3,4,5]
,但它actualy是[2,3,4]
我認爲最後會是空的,或者這個代碼會導致錯誤,但令人驚訝的是它的工作原理,但我不明白爲什麼
拆包* args來我不知道爲什麼變量last
是5
當我這樣做爲了在Python
first, *rest, last = 1,2,3,4,5
我想分配進入由左到右,從而 *rest
將[2,3,4,5]
,但它actualy是[2,3,4]
我認爲最後會是空的,或者這個代碼會導致錯誤,但令人驚訝的是它的工作原理,但我不明白爲什麼
這是一個僅在Python 3中有效的語法,被稱爲「擴展解包ing「,它在PEP 3132中定義 - https://www.python.org/dev/peps/pep-3132/
僅僅因爲它是開箱功能。
first
和last
只是變量,當*rest
有觀點,所以他們得到的元組(1,2,3,4,5)first
和last
值之間的一切。
如果你想有你這樣寫道:
[2,3,4,5]
就用:
first, *args = 1,2,3,4,5
# first --> 1
# args --> [2,3,4,5]