我寫了一個關於Python生成器的測試程序。但是我收到了一個不可預料的錯誤。我不知道如何解釋它。讓我告訴你的代碼:Python生成器中的GeneratorExit
def countdown(n):
logging.debug("Counting down")
while n > 0:
try:
yield n
except GeneratorExit:
logging.error("GeneratorExit")
n -= 1
if __name__ == '__main__':
c = countdown(10)
logging.debug("value: %d", c.next())
我認爲它應該運行沒有任何問題。但輸出是:
# ./test.py
[2015/06/16 04:10:49] DEBUG - Counting down
[2015/06/16 04:10:49] DEBUG - value: 10
[2015/06/16 04:10:49] ERROR - GeneratorExit
Exception RuntimeError: 'generator ignored GeneratorExit' in <generator object countdown at 0x7f9934407640> ignored
爲什麼在最後一行出現錯誤。我不知道爲什麼我觸發了GeneratorExit異常。有沒有什麼事情我錯過了?我還將代碼輸入到交互式python shell中,並且一切正常。這怎麼會發生?