title: Python Strings are immutable so why does s.split( ) return a list of new strings
body: <p>By looking at the <code>CPython</code> implementation it seems the return value of a string <code>split()</code> is a list of newly allocated strings. However, since strings are immutable it seems one could have made substrings out of the original string by pointing at the offsets. </p>
  
  <p>Am I understanding the current behavior of CPython correctly ? Are there reasons for not opting for this space optimization ? One reason I can think of is that the parent string cannot be freed until all its substrings are.</p>