Python Garbage Collection Explained