Facundo Batista schrieb: > Hi! > > A thread in PyAr raised the question that, considering that strings > are immutable, why a slice of a string is a copy and not a reference > to a part of that string.
Because the reference approach is more complicated, harder to implement and may lead to unexpected behavior. For example: >>> a = "a long string with 500,000 chars ..." >>> b = a[0] >>> del a With the slice-as-copy design the string 'a' is immediately freed. The slice-as-reference design would keep the 500kB string in memory although you are only interested in the first character. The buffer interface was designed for the slice-as-copy use case: >>> a = "abcdefg" >>> b = buffer(a, 2, 3) >>> b <read-only buffer for 0x839c2e0, size 3, offset 2 at 0x8391c40> >>> str(b) 'cde' >>> sys.getrefcount(a) 3 >>> del b >>> sys.getrefcount(a) 2 Christian _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com