[Python-Dev] PEP czar for PEP 3144?

Terry Reedy tjreedy at udel.edu
Mon Mar 19 23:44:44 CET 2012

On 3/19/2012 6:04 PM, Guido van Rossum wrote:
> On Mon, Mar 19, 2012 at 2:58 PM, Peter Moody<pmoody at google.com>  wrote:
>> On Mon, Mar 19, 2012 at 12:55 PM, Guido van Rossum<guido at python.org>  wrote:
>>> On Mon, Mar 19, 2012 at 12:37 PM, Ethan Furman<ethan at stoneleaf.us>  wrote:
>>>> Nick Coghlan wrote:
>>>>> Collapsing the address list has to build the result list anyway to
>>>>> actually handle the deduplication part of its job, so returning a
>>>>> concrete list makes sense in that case.
>>>> Having only one function return a list instead of an iterator seems
>>>> questionable.
>>>> Depending on the code it could either keep track of what it has returned so
>>>> far in a set and avoid duplication that way; or, just return an
>>>> `iter(listobject)` instead of `listobject`.
>>> I know I'm lacking context, but is the list ever expected to be huge?
>>> If not, what's wrong with always returning a list?
>> It's possible to return massive lists, (eg, returning the 4+ billion
>> /128 subnets in /96 or something even larger, but I don't think that's
>> very common). I've generally tried to avoid confusion by having 'iter'
>> in the iterating methods, but if more of the methods return iterators,
>> maybe I need to rethink that?
> I personally like having 'iter' in the name (e.g. iterkeys() -- note
> that we dropped this in Py3k because it's no longer an iterator, it's
> a dict view now. But I don't want to promote that style for ipaddr.py.

I am not sure which way you are pointing, but the general default in 3.x 
is to return iterators: range, zip, enumerate, map, filter, reversed, 
open (file objects), as well at the dict methods. I am quite happy to be 
rid of the 'iter' prefix on the latter. This is aside from itertools. 
The main exceptions I can think of are str.split and sorted. For sorted, 
a list *must* be constructed anyway, so might as well return it. This 
apparently matches the case under consideration. If name differentiation 
is wanted, call it xxxlist.

Terry Jan Reedy

More information about the Python-Dev mailing list