generator - python yield recursive - What does the “yield” keyword do?
python generator / python / iterator / yield / coroutine
What is the use of the
yield keyword in Python, and what does it do?
For example, I'm trying to understand this code1:
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
And this is the caller:
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
For those who prefer a minimal working example, meditate on this interactive Python session:
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) # Note that this time nothing was printed