[Python-3000] Should all iter(keys|items|values) be renamed? (original) (raw)

Guido van Rossum guido at python.org
Tue Sep 4 20:17:34 CEST 2007


On 9/4/07, skip at pobox.com <skip at pobox.com> wrote:

After Nick's last message I went searching for "iteritems" in the docs. I fixed a couple places (not yet checked in), but eventually came across Mailbox.iteritems. Looking at the mailbox.py code, sure enough, it still exists:

def iteritems(self): """Return an iterator over (key, message) tuples.""" for key in self.keys(): try: value = self[key] except KeyError: continue yield (key, value) def items(self): """Return a list of (key, message) tuples. Memory intensive.""" return list(self.iteritems()) Should it be renamed items and the second def'n deleted? Same for iterkeys, itervalues where they appear?

It is incorrect to replace items() with iteritems() though -- it should be replaced with a "view" like sketched in PEP 3106.

I think this will be a fairly large project; ATM we don't even have a reusable implementation of dict views (the version in dictobject.c is explicitly restricted to dict instances). It would be a good idea to review the conformance of every stdlib API that tries to look like a mapping, and make them conform to the new mapping ABCs in PEP 3119. (Ditto for sequences and sets except there are so few of those.)

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-3000 mailing list