• Guido van Rossum's avatar
    Iterators phase 1. This comprises: · 59d1d2b4
    Guido van Rossum yazdı
    new slot tp_iter in type object, plus new flag Py_TPFLAGS_HAVE_ITER
    new C API PyObject_GetIter(), calls tp_iter
    new builtin iter(), with two forms: iter(obj), and iter(function, sentinel)
    new internal object types iterobject and calliterobject
    new exception StopIteration
    new opcodes for "for" loops, GET_ITER and FOR_ITER (also supported by dis.py)
    new magic number for .pyc files
    new special method for instances: __iter__() returns an iterator
    iteration over dictionaries: "for x in dict" iterates over the keys
    iteration over files: "for x in file" iterates over lines
    
    TODO:
    
    documentation
    test suite
    decide whether to use a different way to spell iter(function, sentinal)
    decide whether "for key in dict" is a good idea
    use iterators in map/filter/reduce, min/max, and elsewhere (in/not in?)
    speed tuning (make next() a slot tp_next???)
    59d1d2b4
opcode.h 4.1 KB