파이썬 제너레이터 질문입니다.
def test():
    print("A지점 통과")
    yield 1

    print("B지점 통과")
    yield 2

    print("C지점 통과")
    yield 3






for i in test():
    print(i)

출력 :

A지점 통과
1
B지점 통과
2
C지점 통과
3

제너레이터 함수는 일반적으로 next 함수를 사용해야만 실행이 가능한 것으로 알고 있습니다.
위 코드에서 for문 내에서도 test 함수가 정상동작하는 이유는 for문 안에 next 함수가 구현?되어 있기 때문에 정상동작이 가능한 것으로
이해가 되는데 제가 맞게 이해한 건가요?


두 번째 질문입니다.

temp = reversed([1, 2, 3, 4, 5])

for i in temp:
    print("첫 번째 반복문 : {}".format(i))

    for i in temp:
    print("두 번째 반복문 : {}".format(i))

위 코드의 출력을 보니 첫 번째 for문 부분만 출력이 되고
두 번째 for문은 전혀 출력이 되질 않습니다.

조금 조사를 해보니 제너레이터이기 때문에 두 번째 for문이
출력이 되지 않는다던데.. 제너레이터 기본 사용법과 구조가 어떻게 돌아가는지는 알겠습니다만
제너레이터를 왜 써야 하며 어떨 때 써야 하는지 등 이해가 되지 않는 상황입니다.

그러다보니 "제너레이터이기 때문에 두 번째 for문이 출력이 되지 않는다" 이 대목도 이해가 되질 않습니다.
왜 그런지 알려주시면 감사하겠습니다.
(제너레이터 함수를 왜 또는 어떨 때 써야 하는지 알려주시면 좋지만 너무 방대한 양이다 싶으시면 두 번째 for문이 출력되지 않는 이유 정도만 이해 되도록 설명주셔도 됩니다!)

개발자가_되어보자 237

M 2020년 12월 25일 11:39 오후

목록으로