Работа с копиями объектов в Python — задача, часто требующая особого внимания от программистов. Особенно это касается изменяемых объектов, таких как списки (list) и словари (dict). Как избежать ненужных изменений в копиях, сохраняя оригинальные данные нетронутыми? Давайте разберёмся в этом вопросе. Когда вы создаёте копию объекта с помощью метода copy(), вы получаете так называемую {\em поверхностную копию}. Это означает, что на первом уровне копия независима от оригинала, но если внутри объекта имеются ссылки на другие сложные объекты, они будут общими для оригинала и копии. import copy
original = {'key1': [1, 2, 3], 'key2': 'value2'}
shallow_copy = copy.copy(original)
shallow_copy['key1'].append(4) # Изменяем вложенный список
print(original) # Выведет {'key1': [1, 2, 3, 4], 'key2': 'value2'} Если у словаря есть вложенные словари (например, вложенные списки []), то ссылки на них сохраняются. То есть копии первого уровня дают копию первого уровня, а вложенные копии второго уровня