yield关键字跟递归结合使用

来源:互联网 发布:matlab2016 mac破解版 编辑:程序博客网 时间:2024/05/21 17:08

yield关键字所在的函数其实不是函数,只是generator生成器,所以会出现下面的情况。

def deepvalues(mapping):

for k,v in mapping.items():

if isinstance(v, dict):

deepvalues(v)

else:

yeild v


若输入{1:{1:2},2:{1:3}}会发现deepvalues只会运行一次,不会如预想的那样递归调用多次

将红色部分换成

for i deepvalues(v):

yield i

可解决


0 0
原创粉丝点击