About a decade ago, when I played around with C++ in my high school, I learnt about pointers, and memory overflows. In C++, sometimes, using a pointer to expand (or contract) an array in place can cause it to run over (or under) the memory allotted, and cause weird behaviour. I am interpreting slice assignment in Python to be something similar to assignment by pointers:
a[:] = list(range(10000)) # Similar to using pointers in C++,
# because memory location remains unchanged.
So how does Python avoid overflows (or underflows)?
Of course, in C++, we initialize each array to a specified size, and pointer-based assignments violating that size are horrible programming practice.