Ich habe eine Python-Funktion, die einen Satz als Baum durchsucht nach Adjektiv/Nomen-Paaren (wie "gute Katze"), erstellt eine Liste solcher Paare und gibt sie zurück. Hier ist sie:Verstehe nicht, warum diese Python-Funktion eine None zurückgibt, während sie definitiv keine lokale None ist.
def traverse(t):
thelist = list()
try:
t.label()
except AttributeError:
return
else:
if t.label() == 'NP':
for leaf in t.leaves():
thelist.append(str(leaf[0]))
print("The list is ",thelist)
return thelist
else:
for child in t:
traverse(child)
ich diese Funktion aufrufen wie so:
print("traversing the tree returned ",traverse(pos_parser))
Was ich bekommen, ist dies:
The list is ['good', 'cat']
traversing the tree returned None
So schafft es und druckt Variable "thelist" in Traverse gibt es aber nicht zurück (gibt stattdessen None zurück). Warum??
Kann mir bitte jemand helfen?
Mögliche Duplikat [rekursive Code gibt None] (http://stackoverflow.com/q/22311440/953482) – Kevin
Hinweis: die Rückkehr in das Attribut Fehler implizit gibt keine zurück –
Haben Sie versucht, in einem Debugger schrittweise zu gehen? Wird die AttributeError-Ausnahme ausgelöst? –