게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
파이썬 yield 코드 중 이해가 안되는 부분이 있어 질문드립니다.
게시물ID : programmer_15164짧은주소 복사하기
작성자 : 후!하!후하
추천 : 0
조회수 : 704회
댓글수 : 1개
등록시간 : 2015/12/25 01:41:42
Python Essential Reference . p128 본문 내용입니다.
(글로 올렸다가 이상하게 깨져서 이미지로 대체합니다..)

노이해.png
코드가 이해가 안되는 건 오랜만이네요..

생성기가 for문에서 내부적으로 어떻게 실행되는지 이해가 안 되어 질문드립니다.

일단 위 코드는 문제가 없이 실행되는 코드입니다.

wwwlogs에는 www디렉터리를 기준으로 access-log* 패턴에 맞는 파일을 찾아 yield 합니다.

그 아래에 files에는 opener를 통해 파일을 오픈하여 yield 합니다.

쭉 이런식으로 코드가 진행되다가,

이해가 안되는 부분은

전체 코드를 실행시키는 for문에 있습니다.

파이썬에서 yield는 __next()__를 호출하여 실행되는 것으로 알고 있습니다.

그런데 위 for문에선 어떤 __next()__도 호출되지 않았을뿐 아니라,
(내부적으로 next()가 호출된다고 생각하고 있습니다)

심지어 마지막으로 생성된 생성기에 for을 돌리는 것만으로,

이어진 앞서 생성된 모든 생성기가 실행된다는게 가장 신기합니다..

어떻게 이런 코드가 가능한지 궁금합니다 ..ㅜㅜ


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호