Python生成器遍历树

Python生成器遍历树,python,Python,我不熟悉Python生成器。这里我想做一个树的后序遍历。我发现其他人的代码如下。我不太明白,相反,我只想把它写成后者。有人能告诉我为什么我错了吗 def _loopallchildren(parent): for child in parent.children: if child.children: for subchild in _loopallchildren(child): yield subchild

我不熟悉Python生成器。这里我想做一个树的后序遍历。我发现其他人的代码如下。我不太明白,相反,我只想把它写成后者。有人能告诉我为什么我错了吗

def _loopallchildren(parent):
    for child in parent.children:
        if child.children:
            for subchild in _loopallchildren(child):
                yield subchild
        yield child
错误代码:

def _loopallchildren(parent):
    for child in parent.children:
        if child.children:
            _loopallchildren(child)
        yield child

出于同样的原因,仅仅从外部调用_loopallchildrenroot而不使用它也没有任何作用。您必须迭代生成器才能使用它

用Python≥ 3.3您可以使用_loopallchildrenchild的收益率