Множественные назначения с запятой в python

Я попытался найти объяснение этого, часть Gotcha:

b = "1984"
a = b, c = "AB"
print(a, b, c)

возвращает:

('AB', 'A', 'B')

Я понимаю, что происходит с несколькими равными:

a = b = 1

но используя его вместе с запятой, я не могу понять поведение, идеи в том, почему он работает именно так?

Ответ 1

Ответ

a = b, c ="AB"

действует как:

a = (b, c) = "AB"

Вот почему:

a = "AB" and b = "A" and c = "B"

Ответ 2

a = b, c = "AB" 

Не интерпретируется так, как вы думаете. У вас есть множественное назначение, но это не a = b и c = "AB" . Это c, b = "AB" и a = "AB" . В python

x = y = z = 1

интерпретируется как x, y и z получает назначенное значение 1. И запятая используется для распаковки списков значений в отдельные переменные, поэтому b, c = "AB" распаковывает "AB" в "A" и "B", Итак, в конце этой строки

a = b, c = "AB"
a == "AB" 
b == "A"
c == "B"

Ответ 3

Это сводится к порядку операций, строка 2 фактически представляет собой два разных оператора.

a = b

завершается первым. Тогда

b, c = "AB"

который распаковывает значение "AB" и назначает "A" на b и "B" на c.