생성자랑 제네레이터 단어 뜻 때문에 너무 햇갈려서 한참 해맸음. 정리해둔다.
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