@shriramk
Strong agree re aliasing. “Shared mutable state” ought to be a concept students learn to spot early in the curriculum.
It’s true that Python's wording choice here (`del`) makes this •extra• confusing, and that’s unique to Python. (The Swift folks have been working through a closely related problem with the new explicit pointer ownership & lifetime features, and reached a somewhat better place imo: https://github.com/apple/swift-evolution/blob/main/proposals/0366-move-function.md#)