Ключевое слово yield в Python

Как правильно использовать ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код:

def node._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 = list(), [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

Что происходит, когда вызывается метод _get_child_candidates? Возвращается список или один элемент?

Найдено 15 ответов:

The Python yield keyword explained

http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained

Посмотреть решение →