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