파이썬 이터레이션 프로토콜

2021. 6. 29. 13:52프로그래밍/시행착오

728x90

반복문을 사용하면서 in을 통해 리스트나 JSON에 접근할 때, 현재 상태 다음에 접근해야 할 때가 생겼다.

아래의 코드는 현재 시간과 가장 가까운 스케줄과, 그 다음 스케줄을 출력하는 코드인데, 가장 가까운 스케줄을 출력 후 반복을 종료해야 하는데 그 다음 스케줄을 어떻게 출력해야 할까에 대한 해답을 찾다가 알게 되었다.

파이썬 이터레이션 프로토콜은 iterable 한 객체에 관해 사용 가능하며, 아래 예시를 통해 동작 방식을 알 수 있다.

dec = [1,2,3]
i = dec.__iter__()
print(i.__next__())
print(i.__next__())
print(i.__next__())

출력 결과

1 2 3이 차례로 나오는것을 볼 수 있다.

위 상태에서 한번 더 __next__()를 호출하면 어떻게 될까?

 

Traceback (most recent call last):
  File "C:\Users\test\Desktop\test\test.py", line 68, in <module>
    print(i.__next__())
StopIteration

StopIteration 예외가 발생하며 중단되는 것을 볼 수 있다.

 

이러한 특징을 이용하면 다양하게 응용 가능 할 듯하다.

728x90