我正在学习递归函数中yield和return的用法。我有一个嵌套字典,我在其中搜索特定的值。在
使用“yield”时,以下函数运行良好,并成功返回找到的值:
def findvalue (value, document):
if isinstance (document, list):
for d in document:
for result in findvalue(value, d):
yield result
if isinstance (document, dict):
for k,v in document.items():
if v == value:
yield v
elif isinstance (v, dict):
for result in findvalue(value, v):
yield result
elif isinstance (v, list):
for d in v:
for result in findvalue(value, d):
yield result
我理解generator是如何工作的,以及为什么yield会像上面的代码那样工作。现在,如果我使用相同的代码,但是使用return并在那里放置一个check来检查空return,我仍然会遇到“NoneType”迭代问题,因为在某个地方返回了一个空结果:
^{pr2}$我错过了什么?在
我相信你可以改变这一点:
为此:
^{pr2}$相关问题 更多 >
编程相关推荐