Use-cases for alternative iterator

Peter Otten __peter__ at web.de
Fri Mar 11 03:52:47 EST 2011


Steven D'Aprano wrote:

> The iter() built-in takes two different forms, the familiar
> iter(iterable) we all know and love, and an alternative form:
> 
> iter(callable, sentinel)
 
> I've never seen this second form in actual code. Does anyone use it, and
> if so, what use-cases do you have?

I found 36 examples (7% of all iter() calls) on my Kubuntu:

/usr/lib/pymodules/python2.6/multiprocessing/pool.py
    iter(taskqueue.get, None)
/usr/lib/pymodules/python2.6/multiprocessing/tests.py
    iter(self.child_conn.recv, None)
    iter(q.get, None)
    iter(conn.recv_bytes, SENTINEL)
    iter(conn.recv, None)
    iter(conn.recv, 'STOP')
/usr/lib/pymodules/python2.6/multiprocessing/examples/mp_workers.py
    iter(input.get, 'STOP')
/usr/lib/pymodules/python2.6/pychecker2/util.py
    iter(Parents(obj), None)
/usr/lib/pymodules/python2.6/processing/pool.py
    iter(inqueue.get, None)
    iter(taskqueue.get, None)
    iter(get, None)
/usr/lib/pymodules/python2.6/processing/tests/__init__.py
    iter(self.child_conn.recv, None)
    iter(conn.recvBytes, '')
    iter(conn.recv, None)
    iter(conn.recv, 'STOP')
/usr/lib/pymodules/python2.6/IPython/Extensions/ipipe.py
    iter(self, obj)
    iter(self, obj)
    iter(self, obj)
/usr/lib/pymodules/python2.6/nose/plugins/multiprocess.py
    iter(get, 'STOP')
/usr/lib/pymodules/python2.6/django/db/models/sql/query.py
    iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)), 
self.connection.features.empty_fetchmany_value)
    iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)), sentinel)
/usr/lib/pymodules/python2.6/httplib2/__init__.py
    iter(self, domain)
/usr/lib/pymodules/python2.6/MySQLdb/cursors.py
    iter(self.fetchone, None)
/usr/lib/pymodules/python2.6/MoinMoin/server/server_wsgi.py
    iter(lambda: fileobj.read(bufsize), '')
/usr/lib/python2.6/mailbox.py
    iter(self.readline, "")
    iter(self.next, None)
    iter(self.next, None)
/usr/lib/python2.6/multiprocessing/pool.py
    iter(taskqueue.get, None)
/usr/lib/python2.6/dist-packages/mutagen/id3.py
    iter(iter(parts).next, None)
/usr/lib/python2.6/dist-packages/twisted/python/zipstream.py
    iter(lambda : self.read(1), "")
/usr/lib/python2.6/dist-packages/twisted/web2/test/test_stream.py
    iter(s.read, None)
/usr/lib/python2.6/dist-packages/twisted/test/test_compat.py
    iter(IterableCounter(20).next, 10)
/usr/lib/python2.6/dist-packages/setuptools/command/sdist.py
    iter(f.readline, '')
/usr/lib/python2.6/dist-packages/lxml/cssselect.py
    iter(self.next, None)
/usr/lib/python2.6/dist-packages/bzrlib/smart/protocol.py
    iter(_body_decoder.read_next_chunk, None)
/usr/lib/python2.6/dist-packages/bzrlib/tests/test_smart_transport.py
    iter(decoder.read_next_chunk, None)
467 36
7.15705765408




More information about the Python-list mailing list