https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do



<설명>
https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPython/Generators_and_Comprehensions.html
먼저 아래 4가지의 뜻을 정확히 이해해야된다.
iterator : iteration상태로 순서대로 저장되어 있는것을 next명령에 따라 다 소진될때 까지 하나씩 yield하는 object
generator : 메모리에 저장하지않고 많은 아이템을 수열 형태로 만들어내는 object (iterator의 한 형태)
range()는 메모리에 저장되지 않고 사용후 사라지지만, list는 메모리에 저장되어 재사용 가능하다.
comprehension expression, 즉 (<expression> for <var> in <iterable> [if <condition>])
이런 형태로 generator를 만들수 있다.
이렇게 선언하는 자체로는 어떤 계산도 되지않고 메모리에 저장(store)되지도 않는다. 그러나 함수를 통해 불러와 소비되면(consume) 사라진다. 따라서 다시 사용하려면 재정의해야한다.
아래 사이트에 더 쉽게 설명되어있다.
https://pythontips.com/2013/09/29/the-python-yield-keyword-explained/