generator - Python try yield - "수익"키워드의 기능은 무엇입니까?

파이썬 StopIteration / python / iterator / yield / coroutine

Python 에서 yield 키워드를 사용 하는 것은 무엇이며 어떤 역할을합니까?

예를 들어,이 코드 1 을 이해하려고합니다 .

def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild  

그리고 이것은 호출자입니다.

result, candidates = [], [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result

iliketocode



Answer #1

최소한의 작업 예제를 선호하는 사람들을 위해이 대화 형 Python 세션을 묵상하십시오.

>>> def f():
...   yield 1
...   yield 2
...   yield 3
... 
>>> g = f()
>>> for i in g:
...   print(i)
... 
1
2
3
>>> for i in g:
...   print(i)
... 
>>> # 이번에는 아무것도 인쇄되지 않았습니다.