Understanding Python’s Memory Model: Mutability, Identity, and Function Arguments