>>> import time
>>> def countdown(n) :
	while n > 0 :
		# yield를 한 시점에서 함수가 종료되지 않고 다음 호출까지 대기
		yield n
		n -= 1
		time.sleep(1)
	print("end")

	
>>> cnt = countdown(3)
>>> type(cnt)
<class 'generator'>
>>> print(cnt)
<generator object countdown at 0x00A5FAF0>
>>> print(next(cnt))
3
>>> print(next(cnt))
2
>>> print(next(cnt))
1
>>> print(next(cnt))
end
Traceback (most recent call last):
  File "<pyshell#124>", line 1, in <module>
    print(next(cnt))
StopIteration
>>> 
>>> for i in countdown(5) :
	print(i)

	
5
4
3
2
1
end
>>> 

Iterator
list, dictionary, set 은 셀수 있고, 반복가능하다. 그리고 갯수를 셀수 있다.

Generator
Iterator와 다른점은 전체 데이터 값을 메모리에 저장하지 않고, 즉석에서 값을 생성, 반환한다는 것이다.
선언한 사이즈 만큼 배열을 만들지 않기때문에 대량의 데이터를 끄집어낼때 실행시간 및 메모리 점유율등 자원활용 측면에서 유리하다.