함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수.
함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용함.
--> 반복을 줄이고 메소드나 함수의 책임을 확장함.
데코레이터 = 상속을 받는게 아니라 그냥 가져다가 붙여서 씀.
오버라이딩 = 상속을 받아서 부모class를 기능을 새로 바꿈.
개념 = iterator를 생성해주는 함수.
모든 generator는 iterator / iterable한 순서가 지정됨.
yield 키워드를 사용함.
iterator 란?
순서대로 다음 값을 리턴할 수 있는 객체를 의미함.
자체적으로 내장하고 있는 next메소드를 통해 다음 값을 가져올 수 있음.
python의 for문 내부적으로 Iterator를 생성하여 동작하는 것.
yield 란?
일반적인 함수는 어떤 결과 값을 return 키워드를 이용해서 반환하는데, yield키워드를 사용하면 다르게 받을 수 있다.
list = [ 'A', 'B', 'C'] 를 return 해서 받아보면 list로 결과가 나오는데 yield를 사용했으면 generator로 반환함.