Ich habe eine einfache Baumklasse und muss nur über die Blattknoten iterieren können.Wie gebe ich einen Wert zurück, mache aber weiter
füge ich die Daten zu meinem Baum wie folgt:
p = ParamTree()
p.add('system.screen.timeout')
p.add('system.screen.lock.enabled')
p.add('system.screen.lock.code')
und ich möchte in der Lage sein timeout
zu bekommen, enabled
und code
in Folge.
Wenn ich eine Funktion schreiben, um die Werte zu drucken, funktioniert es wie erwartet:
def print_nodes(tree):
for node in tree.nodes:
if node.has_children():
print_nodes(node)
else:
print(node)
Ausgang:
>>> print_nodes(p)
timeout
enabled
code
Wie würde ich einen Generator Umsetzung gehen über, die das gleiche tut? Ich habe versucht, print()
durch yield
zu ersetzen, aber es funktioniert nicht.
def yield_nodes(tree):
for node in tree.nodes:
if node.has_children():
yield_nodes(node)
else:
yield node
Ausgang:
>>> g = yield_nodes(p)
>>> for n in g:
... print(n)
...
>>>