Le dimanche 13 FÃvrier 2005 23:58, Terry Reedy a ÃcritÂ: > Iterators are a subgroup of iterables. ÂBeing able to say iter(it) without > having to worry about whether 'it' is just an iterable or already an > iterator is one of the nice features of the new iteration design. > > Terry J. Reedy
Hi, I have difficulties to represent an iterator as a subspecie of an iteratable as they seem profoundly different to me. But it just might be that my mind is too strongly influenced by the C++ STL where there is a clear (I resist to say "clean") distinction between iteratable and iterator. One of the result of not distinguishing them is that, at some point in your programming, you are not sure anymore if you have an iterator or an iteratable ; and you might very well end up calling "iter()" or "__iter__()" everywhere. I am not concerned with the small performance issue involved here (as I very seldom am) but with clarity. After all, why should you have to call __iter__ on an iterator you just constructed (as in my dummy "example 2") ? One might wonder, "what ? isn't this already the iterator ?" But this, I agree, might very well just be a beginner (as I am) question, trying to learn the new iterator semantics. I have a strong feeling that the problem arises from the difficulty to marry the familiar ""for ... in ..."" construct with iterators. If you put an iteratable in the second argument place of the construct (as is traditionally done) then the syntax construct itself is an implicit iterator. Now, if you have explicit iterators then they don't fit well with the implicit iterator hidden in the syntax. To have iterators act as iteratables might very well had been a compromise to solve the problem. I am not sure at all that this is a "nice feature" to consider an iterator at the same level that an iteratable. It makes it a bit more akward to have the "mind impulse", so to speak, to build iterators on top of other iterators to slightly modify the way iteration is done. But I think I'm getting a bit too severe here as I think that the compomise choice made by Python is very acceptable. Regards, PS : I am carefully reading Micheal Spencer very interesting reply. Thank you, Francis Girard -- http://mail.python.org/mailman/listinfo/python-list