python study : Generator

2020. 3. 28. 12:14·언어/Python
반응형

 

제너레이터(Generator)는 파이썬의 시퀀스를 생성하는 객체이다. 

제너레이터로 전체 시퀀스를 한번에 메모리에 생성하고 정렬할 필요 없이,

잠재적으로 아주 큰 시퀀스(예를 들면 range 등..)을 순회할 수 있다.

 

def rangess(first = 0, last = 100, step = 1):
	number = 0
  	while number <= last:
    	yield number
        number += step
        
>> rangers = rangess(1,20)
>> rangers
<function rangess at 0x10193e268>

이 개념에 대해서 보았을 때는 아무리 쳐도 

<function rangess at ... > 의 말이 나와서 어떤 것을 저장한다는지 이해가 잘 되지 않았었는데..

다시 보고 이해가 되지 않는 것들을 찾아보았다.

왜, 값을 리턴하지 않고 객체가 나오지..?라는 의문이 가시지를 않아 계속 찾아보고 있었는데, 때마침 제너레이터에 대해서 잘 정리해준 글을 올려주신 분이 있어.. 이를 나중에 그대로 기억하기위해서 그대로 가져왔다.

 

""""""""

제너레이터는 리턴되는 모든 값을 메모리에 저장하지 않기 때문에 조금 전 일반 함수의 결과와 같이 한번에 리스트로 보이지 않는 것입니다. 제너레이터는 한 번 호출될때마다 하나의 값만을 전달(yield)합니다.

즉, 위의 #1까지는 아직 아무런 계산을 하지 않고 누군가가 다음 값에 대해서 물어보기를 기다리고 있는 상태입니다

"""""""""

제너레이터는 한꺼번에 값을 기억하고 있는 것이다..단 그것을 메모리에 저장하지 않기 때문에 우리가 원하는 값을 보니는 힘든 것이다.

이를 출력하기 위해서는 for 문이나 while 문 등 loop 문 등 여러 방법들을 통해 

제너레이터가 기억하고 있는 결과 값들을 하나씩 리턴할 수가 있다.

 

>> for i in rangers:
		print(i)
1
2
3
4
5
...
99

 

아래 참고용 링크에는 보다 자세한 설명들이 있기 때문에 이해가 안될 때 들어가서

자세히 보아야 겠다.

 

 

 

 

 

참고용 링크

http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A0%9C%EB%84%88%EB%A0%88%EC%9D%B4%ED%84%B0-generator/

 

SchoolofWeb :: 파이썬 - 제너레이터 (Generator)

파이썬 제너레이터 (Generator) 강좌

schoolofweb.net

 

반응형

'언어 > Python' 카테고리의 다른 글

extends( ) VS appends( )  (0) 2020.05.01
base64 인코딩  (0) 2020.04.28
Python IDE - VS code 단축키 정리 1  (0) 2020.03.17
Introducing python 참고 개념 : multiprocessing  (0) 2020.03.17
String Split and Join? - Hacker Rank 파이썬 코드 챌린지 3  (0) 2020.02.16
'언어/Python' 카테고리의 다른 글
  • extends( ) VS appends( )
  • base64 인코딩
  • Python IDE - VS code 단축키 정리 1
  • Introducing python 참고 개념 : multiprocessing
쟈누
쟈누
Ad astra per aspera
    반응형
  • 쟈누
    쟈누의 기록공간
    쟈누
  • 전체
    오늘
    어제
    • 분류 전체보기 (444)
      • AWS (31)
        • Glue (4)
        • S3 (1)
      • 클라우드 (0)
      • Data Engineering (37)
        • GitHub (10)
        • NiFi (11)
        • Spark (10)
        • Snowflake (0)
        • 머신러닝, AI (6)
      • 언어 (118)
        • 데이터 베이스 (42)
        • JAVA (9)
        • Python (34)
        • Java Script (15)
        • Linux (18)
      • 프로젝트, 인강 그리고 책 (30)
        • Spotify Project (7)
        • RASA chatbot Project (9)
        • Naver shopping Project (6)
        • 빅데이터를 지탱하는 기술 (8)
      • OLD (56)
        • IT 용어 사전 (13)
        • Front End (12)
        • Back End (31)
      • Error code 모음 (165)
        • 1. SQL errors (17)
        • 2. Hadoop errors (20)
        • 3. Linux Errors (14)
        • 4. Python errors (33)
        • 5. JAVA, Spring errors (41)
        • 6. Jav Script errors (10)
        • 7. Dev Tools errors (9)
        • 8. Git errors (8)
        • 9. Jenkins Errors (4)
        • 10. airflow Errors (2)
        • 11. Aws errors (7)
      • 개인 (1)
        • 책 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 관리
    • 글쓰기
  • 링크

  • 공지사항

    • 간단한 블로그 소개
  • 인기 글

  • 태그

    json
    Python
    에러
    SQL
    install
    NiFi
    자바
    파이썬
    python error
    java
    error
    API
    node
    AWS
    설치
    linux
    리눅스
    Git
    Spring
    MySQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
쟈누
python study : Generator
상단으로

티스토리툴바