1
我有一个简单的树类,我需要能够遍历叶节点只。如何返回值,但保持执行
我将数据添加到我的树如下:
p = ParamTree()
p.add('system.screen.timeout')
p.add('system.screen.lock.enabled')
p.add('system.screen.lock.code')
,我希望能够得到timeout
,enabled
和code
顺序。
如果我写一个函数来打印值,它按预期工作:
def print_nodes(tree):
for node in tree.nodes:
if node.has_children():
print_nodes(node)
else:
print(node)
输出:
>>> print_nodes(p)
timeout
enabled
code
我如何去实现发电机,其做同样的事情?我尝试用yield
替换print()
,但它不起作用。
def yield_nodes(tree):
for node in tree.nodes:
if node.has_children():
yield_nodes(node)
else:
yield node
输出:
>>> g = yield_nodes(p)
>>> for n in g:
... print(n)
...
>>>