您的位置:首页 > 其它

yield关键字跟递归结合使用

2015-07-12 00:51 253 查看
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

可解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: