Что делает ключевое слово "yield"?
какая польза от yield
ключевое слово в Python? Что он делает?
например, я пытаюсь понять этот код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
что происходит, когда метод _get_child_candidates
называется?
Возвращается ли список? Один элемент? Это называется снова? Когда прекратятся последующие звонки?
1. Код исходит от Йохена Шульца (jrschulz), который сделал большая библиотека Python для метрических пространств. Это ссылка на полный источник: модуль mspace.