Is An Element of a Sequence an Object?
Steven D'Aprano
steve at pearwood.info
Sun Jun 4 00:31:17 EDT 2017
On Sun, 04 Jun 2017 02:15:33 +0000, Grant Edwards wrote:
> On 2017-06-03, Thomas Jollans <tjol at tjol.eu> wrote:
>> On 03/06/17 21:10, Jon Forrest wrote:
>>
>>> I'm learning about Python. A book I'm reading about it says "... a
>>> string in Python is a sequence. A sequence is an ordered collection of
>>> objects". This implies that each character in a string is itself an
>>> object.
>
> You can think about it that way if you want, and from observable
> behavior you can't tell whether or not it's true.
Actually you can, and you recognise that yourself:
[...]
>> No, strings don't internally store the characters as objects,
>
> Not in CPython, they don't. In some other (hypothetical)
> implementation, they could be. The memory usage speed implications of
> such a decision are not pleasant to contemplate.
Python strings would use a lot more memory if they were implemented in
the way the mystery book suggests they are (each character being
represented as a distinct object).
In Python 3, for example:
>>> import sys
>>> sys.getsizeof("abcde") # actual memory consumption
54
>>> sum(sys.getsizeof(c) for c in "acbde") # theoretical
250
So we can tell the two implementations apart.
--
Steve
More information about the Python-list
mailing list