Ответ 1
Ответ
a = b, c ="AB"
действует как:
a = (b, c) = "AB"
Вот почему:
a = "AB" and b = "A" and c = "B"
Я попытался найти объяснение этого, часть Gotcha:
b = "1984"
a = b, c = "AB"
print(a, b, c)
возвращает:
('AB', 'A', 'B')
Я понимаю, что происходит с несколькими равными:
a = b = 1
но используя его вместе с запятой, я не могу понять поведение, идеи в том, почему он работает именно так?
Ответ
a = b, c ="AB"
действует как:
a = (b, c) = "AB"
Вот почему:
a = "AB" and b = "A" and c = "B"
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"
Это сводится к порядку операций, строка 2 фактически представляет собой два разных оператора.
a = b
завершается первым. Тогда
b, c = "AB"
который распаковывает значение "AB" и назначает "A" на b и "B" на c.