메뉴 닫기

[edx]MITx: 6.00.1x -Week6 Lecture12

객체 지향 프로그래밍에 관한 이야기이다.

상속이 나오고 부모 클래스와 자식 클래스간의 오버로딩의 경우 어떤게 실행되는가에 대해서도 나온다

영어가 부족해서 문제가 잘 이해가 안되서 못풀고 있는데

그렇게 어려운 내용은 아니다.

하지만 뒤에 나오는 Python 의 제너레이터 ( yield )는 이해하기가 힘들다.

Python 에는 특별한 클래스가 있다. 제너레이터이다.

프로시져에 yield 라는 예약어를 사용 하면 해당 프로시져는 제너레이터가 되는데

특이한게 제너레이터는 next() 메소드를 가지는데 실행하면 yield 지점 까지 실행된 후 해당 결과를 return 하고 정지된다.

이런 제너레이터를 사용하는 이유가 대용량 리스트 연산의 경우 리스트를 저장하기 위한 메모리를 할당해야하는데 대용량 데이터를 실행때마다 저장하는것이 비효율적이기 때문에 제너레이터를 사용해서 하나씩 빼서 연산 한다 정도로 이해된다.

강의 후에 구글링을 해봤는데 정확히 이해하고 글을 쓴사람은 찾기 힘들었다 ㅠ

쫌더 찾아본 결과 (제너레이터는 스택영역에 쌓이지 않고 별도의 스택을 만들어서 동작하도록 한다) 라고 나온다.

여튼 결론적으로 대용량 리스트의 연산시 제너레이터를 사용하는 것이 효율적이다.