On 04/06/17 00:42, Jon Forrest wrote:
On 6/3/2017 12:38 PM, Thomas Jollans wrote:
>> I'd like to suggest an explanation of what a sequence is
>> that doesn't use the word 'object' because an object has
>> a specific meaning in Python.
>>
>> Am I on the right track here?
>
> No, strings don't internally store the characters as objects, and yes,
> the slicing operation creates objects. However, strings *are* sequences,
> sequences *are* ordered collections of objects.
I don't see how both can be true. "Object" has a clear meaning in
Python, and the contents of a sequence don't meet the requirements,
as I understand them.
If there were some way of measuring the number of objects in
a program, then it would be easy to prove (or disprove) my hypothesis.
In other words this program
You are confusing how a sequence might be implemented with how it can be
thought of conceptually (*). I guess the book is explaining the
conceptual model (which, as a book for learners, seems quite reasonable).
Whenever you extract an element from a sequence (whether that is by
iteration - such as "for item in seq:" - or by indexing - such as
"seq[x]") - you receive an object.
That doesn't mean that the sequence holds all of its elements physically
in RAM as separate objects.
It is up to the sequence (which is also an object ;)) to decide how to
implement iteration and indexing. It might do that by creating and
storing a whole lot of real objects in RAM or it might do it by
remembering the _formula_ for the sequence and creating those objects as
and when they are asked for.
A list is an example of the first type (the list class doesn't know what
heterogeneous objects might be appended to an instance, so it has to
store an array of objects somehow).
The object returned by range() (xrange() in Py2) is an example of the
latter - the "sequence" is actually just a clever object which knows how
to calculate and create efficiently an object for one of its elements
when you ask for it.
Hope that helps,
E.
(*) And that's great - you're actually thinking about this harder than a
lot of people would. For a lot of learners the _conceptual_ model is
good enough and that's all they'll ever need to understand. You are
curious about the _implementation_ and that's good because now you'll
see much more easily later how to program efficient sequence classes.
--
https://mail.python.org/mailman/listinfo/python-list