Python Python, ты могуч. Ты даже без ";" всё понимаешь. Но, просто так переписать объект ты не можешь. Лично мне, как любителю, это не понятно. Но ничего, с этим мы тоже разберёмся.
Возьмём пример с картинки. Как же так? Внесли изменения в list_1 а оно подействовало на list_2 тоже. Проверим id объекта:
list_1 = [0, 1, 2]
list_2 = list_1
print(id(list_1)) # 2393635697152
print(id(list_2)) # 2393635697152
Ну вот, в очередной раз убеждаемся, что в Python-e нет переменных. Есть только объекты на которые ссылаются разные имена. В данном случае два разных имени ссылаются на один объект.
Но, что же делать если нам надо этот объект именно скопировать? Так, что-бы у него был свой id?
Для этого надо использовать модуль copy. К счастью он сразу идёт с Python и работает из коробки... без шаманства:
import copy
list_1 = [0, 1, 2]
list_2 = copy.copy(list_1)
print(id(list_1)) # 1637554467328
print(id(list_2)) # 1637554460608
Всё бобёр - выдыхай. Работает!!
Да, есть еще метод deepcopy, есть отдельные методы для копирования листов и словарей без использования модуля copy. Но, лично мне этого, пока, достаточно. А дальше - больше.
Более подробно о модуле copy (включая сам copy и deepcopy).
Всем удачи!!
Комментариев нет:
Отправить комментарий