Для неизменяемых объектов нет необходимости копировать, потому что данные никогда не изменятся, поэтому Python использует одни и те же данные; Иды всегда одни и те же. Для изменяемых объектов, поскольку они могут потенциально измениться, [мелкая] копия создает новый объект.
Глубокая копия связана с вложенными структурами. Если у вас есть список списков, то deepcopy copies
также вложенные списки, поэтому это рекурсивная копия. С просто копией у вас есть новый внешний список, но внутренние списки - это ссылки.
Назначение не копируется. Он просто устанавливает ссылку на старые данные. Поэтому вам нужно скопировать, чтобы создать новый список с тем же содержимым.
Да, это нормально - у вас есть целая куча промежуточных артефактов сборки в вашей исходной папке.
Цель этих .gitignore
файлов, которые вы найдете в вашем исходном дереве, - сообщить git, какие файлы являются временными файлами сборки или другими файлами конфигурации, специфичными для вашего компьютера. Затем Git решает, какие файлы следует сохранить для потомков в системе контроля версий, а какие следует игнорировать.
Если вы не собираетесь использовать git, используйте файлы gitignore, чтобы увидеть, какие папки вы можете вручную исключить из вашего zip-файла. (Папка build
, вероятно, будет основным виновником.)