В Python есть оператор для присвоения имени имени, и оно =
.
Язык также поддерживает многие другие операторы, такие как +
, -
, **
для операций, определенных в специальных методах ваших объектов.
Хотя +
является математическим знаком для добавления вещей, его можно настроить так, чтобы он делал все, что угодно.
Иногда вы хотите выполнить операцию и сохранить ее под тем же именем. В этих ситуациях у вас есть операторы на месте, которые являются обычными операторами, которые вы используете для добавления знака =
.
Для неизменяемых объектов (чисел, строк, кортежей, ...) нельзя вносить изменения на месте, потому что ... они неизменны. Таким образом, методы на месте делают то же самое, что и обычный метод с последующим присваиванием.
Для изменяемых объектов разница составляет много ясно:
добавить на место:
>>> a = []
>>> b = a
>>> b += [1,2]
>>> a
[1, 2]
Добавить и назначить:
>>> a = []
>>> b = a
>>> b = b + [1,2]
>>> a
[]
См? Сам объект был преобразован с помощью добавления списков на месте, но в другом случае был создан новый объект.
Что касается вашего другого вопроса, запятая - это разделитель кортежей.
a = (1) # Just number 1 inside parenthesis
a = (1,) # A tuple with one element