递归函数python的返回值

2024-10-02 12:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对这个递归函数有一个问题:

def query(params,conta):        
    req = api.APIRequest(site, params)
    res = req.query(querycontinue=False)
    pprint.pprint(res)  
    conta=conta+str(res).count('title') 
    print conta

    if 'query-continue' not in res: 
        return conta
    else:
        parametri=params.copy()
        lastContinue=res['query-continue']
        lastContinue=lastContinue['links']
        lastContinue=lastContinue['gplcontinue']

        parametri['gplcontinue']=lastContinue
        query(parametri,conta) 

paramet = {'action':'query',
    'pageids':'44776',
    'generator':'links',
    'gpllimit':'max'
}
x=query(paramet,0)
print x

如果它从不执行else块,则返回正确的值。相反,如果它至少执行一次else块,那么它总是返回None。为什么?在


Tags: defresparamslinksqueryreqelsepprint
1条回答
网友
1楼 · 发布于 2024-10-02 12:37:36

正在忽略递归调用的返回值。您仍然需要返回对query()的递归调用显式返回的内容:

else:
    parametri=params.copy()
    lastContinue=res['query-continue']
    lastContinue=lastContinue['links']
    lastContinue=lastContinue['gplcontinue']

    parametri['gplcontinue']=lastContinue
    return query(parametri,conta) 

否则,query()的外部调用将结束并返回默认值,即None。在

相关问题 更多 >

    热门问题