iterable, generator, yield

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

yield

generator

generator_result

<설명>

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/

댓글 남기기