[Python-Dev] PEP czar for PEP 3144?

Ethan Furman ethan at stoneleaf.us
Mon Mar 19 22:50:22 CET 2012


Guido van Rossum wrote:
> On Mon, Mar 19, 2012 at 1:13 PM, Ethan Furman wrote:
>> Nothing wrong in and of itself.  It just seems to me that if we have several
>> functions that deal with ip addresses/networks/etc, and all but one return
>> iterators, that one is going to be a pain... 'Which one returns a list
>> again? Oh yeah, that one.'
> 
> It depends on whether they really are easy to confuse. If they are,
> indeed that feels like poor API design. But sometimes the only time
> two things seem confusingly similar is when you have not actually
> tried to use them.

Heh -- true, I have not tried to use them (yet) -- just offering another 
viewpoint.  ;)


>> Granted it's mostly a stylistic preference for consistency.
> 
> And remember that consistency is good in moderation, but if it becomes
> a goal in itself you may have a problem.

While I agree that consistency as a goal in and of itself is not good, I 
consider it more important than 'moderation' implies; in my own code I 
try to only be inconsistent when there is a good reason to be.

To me, "it's already a list" isn't a good reason -- yes, that's easier 
for the library author, but is it easier for the library user?  What is 
the library user gaining by having a list returned instead of an iterator?

Of course, the flip-side also holds:  what is the library user losing by 
getting an iterator when a list was available?

When we way the pros and cons, and it comes down to a smidgeon of 
performance in trade for consistency [1], I would vote for consistency.

~Ethan~

[1] I'm assuming that 'iter(some_list)' is a quick operation.


More information about the Python-Dev mailing list