Iterators do not work recursively like that. You have to re-yield each result, by replacing
explore(path)
with something like
for value in explore(path):
yield value
Python 3.3 added the syntax yield from X
, as proposed in PEP 380, to serve this purpose. With it you can do this instead:
yield from explore(path)
If you’re using generators as coroutines, this syntax also supports the use of generator.send()
to pass values back into the recursively-invoked generators. The simple for
loop above would not.