• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

generator 예제 2번 질문입니다

21.09.27 16:54 작성 조회수 104

0

def generator_ex1():
    print('Start')
    yield 'A point'
    print('Continue')
    yield 'B point'
    print('End')

다음과 같이 코드 작성 후

temp2 = [x * 3 for x in generator_ex1()]

리스트 컴프리헨션을 실행하니 

Start

Continue

End

라는 결과가 나왔습니다. 리스트 컴프리헨션 안의 generator_ex1()을 실행하면서 나온 결과라고 생각하는데요,

반면 위의 리스트 컴프리헨션을 지운 후 

temp3 = (x * 3 for x in generator_ex1())

다음과 같이 제너레이터 익스프레션 실행을 하여도 아무런 결과값이 나오지 않았습니다. 표현식 안의 generator_ex1()이 실행되지 않은 것으로 보이는데, 두 과정 사이에 어떤 차이가 있는 것인지 궁금합니다

답변 1

답변을 작성해보세요.

0

next가 호출되기 전까지는 대기 상태로 존재합니다.

반면에 위에 코드는 자동으로 다음 원소를 끝까지 순회합니다.~