발전기에서 raise StopIteration
문과 return
문을 사용하는 것의 차이점에 대해 궁금합니다.발전기에서 StopIteration을 발생시키는 것과 리턴 문을 비교하는 것의 차이점은 무엇입니까?
예를 들어이 두 기능간에 차이가 있습니까? 내가 할 수있는 더 "파이썬"방법을 추측하고있어
def my_generator0(n):
for i in range(n):
yield i
if i >= 5:
return
def my_generator1(n):
for i in range(n):
yield i
if i >= 5:
raise StopIteration
은 (내가 틀렸다면 수정하시기 바랍니다) 두 번째 방법이지만, 지금까지의 내가 볼 수있는 두 가지 방법은 StopIteration
예외를 발생시킨다.
명시 적 또는 암시 ('단부 오프') 'return'는 발전기를 종료하도록 의도 된 방법이다. PEP 479가 승인되면, 'raise StopIteration'버전은 현재와 같이 작동하지 않습니다. –