Kris Kowal schrieb:
I had a thought that might be pepworthy.  Might we be able to break
outer loops using an iter-instance specific StopIteration type?

This is the desired, if not desirable, syntax::

    import string
    letters = iter(string.lowercase)
    for letter in letters:
        for number in range(10):
            print letter, number
            if letter == 'a' and number == 5:
                raise StopIteration()
            if letter == 'b' and number == 5:
                raise letters.StopIteration()

The first StopIteration would halt the inner loop.  The second
StopIteration would halt the outer loop.  The inner for-loop would
note that the letters.StopIteration instance is specifically targeted
at another iteration and raise it back up.

For the record: I share GvR's opinion on the general usefulness.

Additionally, your syntax is impossible. There isn't always a containing variable for the iterable.

And if you meant "letter", it's ambigous. It is perfectly legal in python to do this:

class Foo(object):
    StopIteration = StopIteration

for letter in [Foo(), Foo()]:
    for number in range(10):
        raise letter.StopIteration


Diez
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to