Diese Frage stammt aus PEP 448
-- Additional Unpacking Generalizations und ist in Python 3.5 soweit ich weiß (und nicht zurück portiert auf). Insbesondere wird in dem Abschnitt Nachteile wird folgendes angemerkt:Star * -Operator auf der linken oder rechten Seite einer Zuweisungsanweisung
Während
*elements, = iterable
Ursachenelements
einlist
zu sein,elements = *iterable
verursachtelements
eintuple
zu sein. Der Grund dafür kann Leute verwirren, die mit dem Konstrukt nicht vertraut sind.
die in der Tat halten, für iterable = [1, 2, 3, 4]
ergibt der erste Fall ein list
:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
Während für den zweiten Fall ein tuple
erstellt:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
mit dem Konzept zu sein, nicht vertraut , Ich bin verwirrt. Kann jemand dieses Verhalten erklären? Handelt der markierte Ausdruck abhängig von der Seite, auf der er sich befindet, unterschiedlich?