제너레이터 함수는 파이썬에서 값을 한 번에 하나씩 반환하는 이터레이터를 생성하는 함수이다.
일반 함수와는 다르게 return 대신 yield를 사용해서 값을 반환한다.
제너레이터를 사용하면 메모리를 효율적으로 사용할 수 있어 많은 양의 데이터를 처리할 때 유용하다.
yield는 제너레이터 함수에서 사용되는 키워드로 함수를 일시 중지하고 현재 값을 반환한다.
그리고 다시 제너레이터를 호출하면 중지했던 위치에서 계속 실행한다.
return과 달리 함수를 종료하지 않고 함수의 상태를 유지하면서 값을 순차적으로 만들어낼 수 있다.
product1 = Product.objects.get(id=1)
product2 = Product.objects.filter(id=1)
get( )은 객체 하나를 가져오고 객체가 없으면 DoesNotExist 오류 / 객체가 여러 개면 MultipleObjectsReturned 오류 발생
filter( )는 QuerySet으로 결과를 반환하기 때문에 값이 없으면 빈 QuerySet을 반환 / 여러 개면 모두 포함한 QuerySet을 반환
일반적으로 하나의 객체를 명확히 가져올 땐 get( )을 사용하고 여러 개의 객체를 조회할 땐 filter( )를 사용한다.