Не понимаю, почему распаковка не работает, как ожидалось - PullRequest
4 голосов
/ 24 марта 2019

Распаковка Python не работает

a = [1,2,3,4]
*m = a; //error

b,*m = a
print(m) //working

Пожалуйста, объясните, почему предыдущая не работает.

1 Ответ

4 голосов
/ 24 марта 2019

Per PEP-3132 , который ввел синтаксис "расширенная повторяемая распаковка" и ссылку на язык , "помеченная" цель действительна только в присваивание, где цель является итеративной.

Также ошибочно использовать помеченное выражение в качестве одиночного присваивания цель, как в

*a = range(5)

Это, однако, допустимый синтаксис:

*a, = range(5)

Итак, чтобы сделать это синтаксически верным, вы можете сделать:

*m, = a

или даже:

[*m] = a

Обратите внимание, что идиоматический способ создания мелкой копии списка - это срез:

m = a[:]
...