책
Python Essential Reference . p128 본문 내용입니다.
(글로 올렸다가 이상하게 깨져서 이미지로 대체합니다..)
코드가 이해가 안되는 건 오랜만이네요..
생성기가 for문에서 내부적으로 어떻게 실행되는지 이해가 안 되어 질문드립니다.
일단 위 코드는 문제가 없이 실행되는 코드입니다.
wwwlogs에는 www디렉터리를 기준으로 access-log* 패턴에 맞는 파일을 찾아 yield 합니다.
그 아래에 files에는 opener를 통해 파일을 오픈하여 yield 합니다.
쭉 이런식으로 코드가 진행되다가,
이해가 안되는 부분은
전체 코드를 실행시키는 for문에 있습니다.
파이썬에서 yield는 __next()__를 호출하여 실행되는 것으로 알고 있습니다.
그런데 위 for문에선 어떤 __next()__도 호출되지 않았을뿐 아니라,
(내부적으로 next()가 호출된다고 생각하고 있습니다)
심지어 마지막으로 생성된 생성기에 for을 돌리는 것만으로,
이어진 앞서 생성된 모든 생성기가 실행된다는게 가장 신기합니다..
어떻게 이런 코드가 가능한지 궁금합니다 ..ㅜㅜ