【发布时间】:2018-06-16 11:21:28
【问题描述】:
我有 dict 类型的变量 r。变量 item 保存项目列表,total_results 是一个 int。只要满足项目数小于项目总数的条件,就递归调用该函数。但是,如果我测试项目是否等于总结果,return 语句将返回 None。将此 elif 更改为 if 确实会返回正确的值。
有人能指出我正确的方向来找出为什么在 elif 或 else 块中返回 r 会产生 None 吗?
非常感谢!!
相关代码sn-p:
if len(items) < total_results:
params['start_index'] = len(items)
self.fetch_company_officers(company_number=company_number, items=items, **params)
elif len(items) == total_results:
r['items'] = items
return r
完整代码:
def fetch_company_officers(self, company_number, items=None, **kwargs):
uri = 'company/{}/officers'.format(company_number)
params = kwargs
r = self.make_request(uri=uri, **params)
# Test if items are set
if items is None:
items = r['items']
else:
items.extend(r['items'])
# Iterate multiple pages
total_results = r['total_results']
if len(items) < total_results:
params['start_index'] = len(items)
self.fetch_company_officers(company_number=company_number, items=items, **params)
elif len(items) == total_results: # TO DO: ??
r['items'] = items
return r
【问题讨论】:
-
你能介绍一下整个递归函数吗?
-
如果执行流经您的
if块而不是您的elif块,会得到什么returned? (请记住,如果没有明确返回,则返回None) -
这里是完整的代码,看我的原帖。
-
我认为您应该首先检查两者的值是什么 1. Len(items) 2. Total_results 使用打印功能