Python Copy Semantics

Assignment binds a new name to an existing object. A shallow copy creates a new outer container but retains references to nested objects, while a deep copy recursively copies reachable objects where appropriate.