Когда дело дошло до читаемости кода и производительности, Python всегда имел преимущество. Благодаря обширной библиотеке, поддерживающей простые математические операции и проекты машинного обучения, это упрощает создание приложения в кратчайшие сроки.

Python не такой уж снисходительный по своей природе. Если вы работаете над программным обеспечением на уровне развертывания, вы просто не можете позволить себе возиться с ним. Попробуйте написать цикл for без отступов. (☉。☉)!

for i in range(0,10):
print(i)
#error
 File “<stdin>”, line 2
 print(i)
 ^
IndentationError: expected an indented block

Вы просто не можете ожидать большего или меньшего! Но не всегда вы сталкиваетесь с ошибкой при выполнении кода. Это то, что я собираюсь объяснить, используя модуль = (Оператор присваивания) и copy в Python. Неважно, если вы не использовали их раньше. Я объясню это подробно!

В этом блоге будут рассмотрены следующие темы:

  1. Оператор присваивания над объектами (список здесь).
  2. Копировать Модуль: Неглубокое и глубокое копирование

1. Оператор присваивания над объектами

«=» Или оператор присваивания часто используется во всех языках программирования при присвоении переменной некоторого значения.

#declaring variables
var_a = 5
var_b = 6
#print sum
print(var_a+ var_b)  #11

Хотя в целом он работает нормально, но при назначении списка переменной дело обстоит иначе. Чтобы объяснить это для краткости, вот пример того, как это работает.

.append () - это метод, используемый со списком. В качестве входных данных он принимает единственный аргумент - элемент. Элементом могут быть числа, словари, другой список и так далее. Он не возвращает никакого значения, то есть возвращает None.

Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом. Он просто устанавливает ссылку list_1 на new_list. и фактически не копирует все элементы исходного списка. Поэтому каждый раз, когда мы вносим некоторые изменения в new_list, он изменяет исходный list_1 и наоборот.

Что делать, если вы работаете с действующей базой данных, пытаясь скопировать контент (фактически создавая ссылку с помощью ‘=’ ) в какую-то новую переменную. Затем вы просто добавили секретные ключи к этому контенту, и клиенты это увидят (поскольку исходный контент тоже был изменен)! Попался! Вы допустили опечатку, вы не можете себе позволить переделывать!

Это не то, что мы на самом деле собираемся делать, но это необходимо решить! Хорошо! В Python есть встроенный модуль - копия, чтобы с ним можно было столкнуться.

2. Копировать модуль

Модуль копирования позволяет нам фактически создавать неизменяемую (или частично изменяемую) копию объекта. Это выполняется с помощью операций мелкого и глубокого копирования.

Неглубокая копия и глубокая копия

.deepcopy (список) используется для создания неизменяемых объектов (здесь список). То есть любые изменения в новом объекте не влияют на исходный объект. В обоих случаях Случай I и Случай II, добавляя [6,7] к li_new, и изменяя li_new [1] (второй элемент в списке), не отражает изменения в li.

Иногда нам нужна изменяемая копия, и здесь в игру вступает мелкая копия.

Здесь , .copy (list) не влияет на исходный список в случаях I и III. Но в случае II 3 (li [1] [1]) заменяется на [8,9,10]. Это связано с тем, что, в отличие от глубокой копии, поверхностная копия (.copy ()) отражает изменения исходного объекта при работе с составными объектами (объекты, содержащие другой объект (например, списки, словари и т. д.)), например

[1, [2 ,3 , 4], 5, 6]                #list in list
[1, {'first': 2, 'second': 3}, 4, 5] #dictionary in list

Вуаля! Теперь у нас есть четкое представление о работе с объектами при копировании и изменении содержащихся в них данных.

Так что в следующий раз, когда вы будете работать с действующей базой данных, избегайте этой онсекунды! 👇🏼 или обратитесь к этому блогу! :)