Почему в следующий раз возникает «StopIteration», но «для» сделать нормальный возврат?

В этом куске кода почему используетсяза' результата нетStopIteration» или этоза' цикл перехватывает все исключения и затем молча завершается? В каком случае, почему у нас есть постороннийвернуть'?? Или этоraise StopIteration вызванный: ?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)

Если предположить,StopIteration запускается:return None, Когда генерируется GeneratorExit?

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)

Если я вручную сделаю:

c = countdown(10)
c.close() #generates GeneratorExit??

В таком случае почему нея вижу след?

Ответы на вопрос(1)

Ваш ответ на вопрос