Comment on PEP-0322: Reverse Iteration Methods

Alex Martelli aleax at aleax.it
Sat Sep 27 04:49:00 EDT 2003


David Abrahams wrote:
   ...
>> I always assumed that these were considered inconsistent with normal
>> use of tuples (which certainly I rarely need to get 'index' or
>> 'count'-like results from).
> 
> I don't see why not.

The party line (not saying I necessarily agree, mind you -- just relating 
it) is that tuples are meant as semantically heterogeneous containers
(semantically in that the items may happen to be the same type, but
their _meaning_ is disparate: e.g., consider the tuples used in modules
time or stat).  So it doesn't really make sense to iterate on them, either;
it just happens to be possible because their items are accessed with []
with progressive naturals, and they have a len().  Associating _names_
to the indices makes more sense and indeed such pseudo-tuples are
starting to be supplied by the standard library (though not a general
mechanism for making your own, yet).  Much like you can't iterate in
C++ on a std::pair<>, thus you "shouldn't" be able to iterate on a tuple.

"Frozen" versions of lists and dicts might make more sense -- and lose
only the MUTATING methods.  I've seen Ruby experts claim that the
idea of freezing an object looks cool but in practice you end up almost
never using it -- they're speaking from experience, I guess, since in Ruby
they've had the possibility of freezing any object for ages.  However, my
intuition (not supported by that much specific experience) makes me
yearn for such a feature...


Alex





More information about the Python-list mailing list