교 향
Maximalism
교 향
전체 방문자
오늘
어제
  • 전체글
    • Coding
    • Linux
    • Docker
    • Python
    • AI
      • GPT
      • Pandas
      • Numpy
      • tensorflow
      • pytorch
      • openCV
      • Study
      • AIconnect - [GPT]한국어..
    • Data structure, OS
    • Competitions
    • Investment
    • Book
    • Health
    • Trip
    • Memo
    • 대학원

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • ActivationFunction #활성화함수 #인공지능면접
  • AI면접 #딥러닝면접 #인공지능면접 #기울기소실 #GradientVanishing

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
교 향

Maximalism

Python

이터레이터에서 왜 __iter__를 선언할까?

2022. 11. 25. 17:55

https://wikidocs.net/134909

class MyItertor:
    def __init__(self, data):
        self.data = data
        self.position = 0

    def __iter__(self):
        print(self)
        return self

    def __next__(self):
        if self.position >= len(self.data):
            raise StopIteration
        result = self.data[self.position]
        self.position += 1
        return result

if __name__ == "__main__":
    i = MyItertor([1,2,3])
    print(type(i))
    for item in i:
        print(item)

 

위키를 보며 '이터레이터'를 공부하던 중, 두 번째 def __iter__에서

굳이 왜 자기 자신을 반환하는 __iter__를 정의해 줘야 하는 걸까?란 의문이 들었다.

하여 __iter__부분을 지우고 돌려보니 돌아가지 않았는데, 이유는

 

def __init__과 def __iter__까지가 'iterable'한 객체를 만들겠다는 말이었다.

실제 코드를 돌리면 init과 iter는 한 번 돌고 __next__에서 실제로 여러번 함수가 돌아간다.

__iter__를 선언함으로 나는 'iterable'한 객체를 만들거야! 라며 파이썬에 알려주는 약속인 것이다.

 

즉, self로 MyItertor를 불러와 iterable하게 반환해주고순환하며

__next__에서 다음 동작으로 넘어가게 하여 'iterator'를 만드는 것임
https://shoark7.github.io/programming/python/iterable-iterator-generator-in-python
└ 이터레이터와 이터러블의 차이는 여기에 설명이 자세히 나와 있음.

'Python' 카테고리의 다른 글

[python] range&enumerate  (0) 2022.12.22
파이썬 string 앞에 0채우기  (0) 2022.12.20
리눅스(CentOS) GPU 사용 시 메모리 오류  (0) 2022.11.18
[파이써닉한 코딩] 헷갈리는 이중중첩문  (0) 2022.10.26
백준 1152번 - 단어의 개수  (0) 2022.09.29
    'Python' 카테고리의 다른 글
    • [python] range&enumerate
    • 파이썬 string 앞에 0채우기
    • 리눅스(CentOS) GPU 사용 시 메모리 오류
    • [파이써닉한 코딩] 헷갈리는 이중중첩문
    교 향
    교 향
    AI/ML/DL

    티스토리툴바