Утверждение в связанном ответе шире, чем должно быть. Неявные копии редки в Python, и в тех случаях, когда они случаются, можно утверждать, что Python выполняет неявную копию, но они случаются.
Что действительно верно, так это то, что стандартные правила присвоения имен не включают копию. По умолчанию
a = b
не будет копировать объект, назначенный на a
. Это значение по умолчанию может быть переопределено пользовательским локальным объектом пространства имен, что может произойти при использовании exec
или метаклассе с методом __prepare__
, но это происходит крайне редко.
Что касается случаев, когда неявные копии действительно происходят, первое, что приходит на ум, - это то, что стандартный библиотечный модуль multiprocessing
выполняет неявные копии повсеместно, что является одной из причин, по которой multiprocessing
вызывает много путаницы. Присвоения, отличные от присвоения имени, могут также включать копии; a.b = c
, a[b] = c
и a[b:c] = d
могут включать копии, в зависимости от того, что является a
. a[b:c] = d
особенно вероятно будет включать копирование данных d
, хотя обычно это не будет связано с созданием объекта, который является копией d
.