Warum führt die Verwendung for
in diesem Codeteil zu no StopIteration
oder for
fängt die Schleife alle Ausnahmen ein und wird dann stillschweigend beendet? In welchem Fall haben wir das Fremde return
? Oder ist das
raise StopIteration
verursacht 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, StopIteration
wird ausgelöst durch : return None
. Wann wird GeneratorExit
generiert?
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?
quelle