Python에서 return 대신 Yield를 언제 사용해야 합니까?
Yield 문은 함수의 실행을 일시 중지하고 호출자에게 값을 다시 보내지만 함수가 중단된 부분부터 다시 시작할 수 있도록 충분한 상태를 유지합니다. 함수가 재개되면 마지막 항복 실행 직후에 계속 실행됩니다. 이를 통해 코드는 한 번에 계산하여 목록처럼 다시 보내는 대신 시간이 지남에 따라 일련의 값을 생성할 수 있습니다.
예를 들어 보겠습니다.
파이썬
# A Simple Python program to demonstrate working> # of yield> # A generator function that yields 1 for the first time,> # 2 second time and 3 third time> def> simpleGeneratorFun():> > yield> 1> > yield> 2> > yield> 3> # Driver code to check above generator function> for> value> in> simpleGeneratorFun():> > print> (value)> |
산출:
1 2 3
반품 지정된 값을 호출자에게 다시 보내는 반면 생산하다 일련의 값을 생성할 수 있습니다. 시퀀스를 반복하고 싶지만 전체 시퀀스를 메모리에 저장하고 싶지 않을 때 Yield를 사용해야 합니다. Python에서는 Yield가 사용됩니다. 발전기 . 생성기 함수는 일반 함수와 동일하게 정의되지만 값을 생성해야 할 때마다 반환 대신 Yield 키워드를 사용하여 수행합니다. def의 본문에 Yield가 포함되어 있으면 해당 함수는 자동으로 생성기 함수가 됩니다.
파이썬
# A Python program to generate squares from 1> # to 100 using yield and therefore generator> # An infinite generator function that prints> # next square number. It starts with 1> def> nextSquare():> > i> => 1> > # An Infinite loop to generate squares> > while> True> :> > yield> i> *> i> > i> +> => 1> # Next execution resumes> > # from this point> # Driver code to test above generator> # function> for> num> in> nextSquare():> > if> num>> 100> :> > break> > print> (num)> |
산출:
1 4 9 16 25 36 49 64 81 100