파이썬 제너레이터 질문입니다.
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 오후