需要有退出条件, 比如检查一段数据中是否有unicode字符
def check_unicode(data):
"""
:param data:
:return:
"""
if isinstance(data, dict):
for k, v in data.iteritems():
if isinstance(v, dict):
if check_unicode(v):
return True
elif isinstance(v, list):
if check_unicode(v): # 检查为True退出
return True
else:
if v and isinstance(v, unicode):
return True
elif isinstance(data, list):
for v in data:
if isinstance(v, dict):
if check_unicode(v):
return True
elif isinstance(v, list):
if check_unicode(v):
return True
else:
if v and isinstance(v, unicode):
return True
else:
if data and isinstance(data, unicode):
return True
return False
显示后return 一个特殊值 然后检查foo的返回变量 如果是那个特殊值直接基于return 那个值
太模糊的问题,上代码才有得分析。
递归需要出口条件,也就是你说的停止。。
一般情况在递归内部需要一个分支判断,如:
递归一定次数以后达到上面的if条件,递归就结束了。
显示后加个return就行