Warum führt die Verwendung forin diesem Codeteil zu no StopIteration
oder forfängt die Schleife alle Ausnahmen ein und wird dann stillschweigend beendet? In welchem Fall haben wir das Fremde return? Oder ist das
raise StopIterationverursacht durch : return None?
#!/usr/bin/python3.1
def countdown(n):
print("counting down")
while n >= 9:
yield n
n -= 1
return
for x in countdown(10):
print(x)
c = countdown(10)
next(c)
next(c)
next(c)
Angenommen, StopIterationwird ausgelöst durch : return None. Wann wird GeneratorExitgeneriert?
def countdown(n):
print("Counting down from %d" % n)
try:
while n > 0:
yield n
n = n - 1
except GeneratorExit:
print("Only made it to %d" % n)
Wenn ich manuell Folgendes mache:
c = countdown(10)
c.close() #generates GeneratorExit??
In welchem Fall sehe ich keinen Traceback?