반응형

생성자랑 제네레이터 단어 뜻 때문에 너무 햇갈려서 한참 해맸음. 정리해둔다.

 

Constructor(생성자) : 객체가 생성될 때 자동으로 호출되는 메서드

def __init__(self):

 

Generator(제너레이터) : iterator를 생성해주는 함수. 함수안에 yield 키워드를 사용.

yield가 호출되면 암시적으로 return이 호출, 한번 더 실행되면 실행되었던 yield 다음 코드가 실행됨

next를 호출 할 때 마다 함수 안의 yield까지 코드를 실행하며, yield에서 값을 발생시킴(generate)

def infinite_generator():
    count = 0
    while True:
        count+=1
        yield count

yield from ~ : iterable한 객체를 yield할 때

def four_generator():
    a = [1, 2, 3, 4]
    yield from a

gen = four_generator()
type(gen) #generator
list(gen) #[1, 2, 3, 4]

일반 함수는 return 후 함수를 끝내지만, generator는 yield 함으로써 값을 바깥으로 넘기고 대기상태에 있게 된다.

 

Iterator - 값을 차례대로 꺼낼 수 있는 객체

iterable한 타입 - list, dict, set, str, bytes, tuple, range

 

ㅇ chain : iterable한 객체들을 인수로 받아 하나의 iterator로 반환(iterable 객체들 끼리 연결)

from itertools import chain
country = ['대한민국','스웨덴','미국']
capital = ['서울','스톡홀롬','워싱턴']

c = chain(country, capital)

ㅇ zip : iterable한 객체를 인수로 받으며 동일한 개수로 이루어진 자료형을 묶어서 iterator로 반환.

country = ['대한민국','스웨덴','미국']
capital = ['서울','스톡홀롬','워싱턴']
for cou, cap in zip(country, capital):
    print('국가명 : {}, 수도 : {}'.format(cou,cap))

국가명 : 대한민국, 수도 : 서울

국가명 : 스웨덴, 수도 : 스톡홀롬

국가명 : 미국, 수도 : 워싱턴

 

참고 :  https://wikidocs.net/16069

https://kkamikoon.tistory.com/90

반응형

'Python' 카테고리의 다른 글

python2.7 가상환경 구축  (0) 2019.07.20

+ Recent posts