Queste domande derivano da PEP 448
-- Additional Unpacking Generalizations ed è presente in Python 3.5 per quanto ne so (e non è backportato a 2.x
). Specificamente, nella sezione Svantaggi, si evidenzia quanto segue:Operatore Star * sul lato sinistro e destro di un estratto conto
Mentre
*elements, = iterable
causeelements
per essere unlist
,elements = *iterable
, provocaelements
essere untuple
. La ragione di ciò potrebbe confondere le persone che non hanno familiarità con il costrutto.
Il che non davvero tenere, per iterable = [1, 2, 3, 4]
, il primo caso si ottiene un list
:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
Mentre per il secondo caso un tuple
viene creato:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
Essere familiarità con il concetto , Sono confuso. Qualcuno può spiegare questo comportamento? L'espressione stellata agisce in modo diverso a seconda del lato su cui si trova?