On PEP 312: simple implicit lambda

Alex Martelli aleaxit at yahoo.com
Sun Feb 16 18:23:23 CET 2003

Dan Schmidt wrote:
> In Python, to code these 'loop and a half' constructs, you have to
> either duplicate some code, as Christos did, or put a conditional
> break halfway through the loop, as I did.

Or (generally best these days) define and use an iterator, e.g.:

def readblocks(fileobject, blocksize=4096):
    def readoneblock():
        return fileobject.read(blocksize)
    return iter(readoneblock, '')

for data in readblocks(file_object):

or, use a lambda as iter's first argument to keep the function
you're introducing anonymous, if you prefer that style:

for data in iter(lambda:file_object.read(4096), ''):


More information about the Python-list mailing list