我看了雷蒙德·赫廷格的Idiomatic Python演讲,了解了sentinel argument到iter()
。
我想尝试将它应用到一段代码中,我正在迭代使用分页的API(这是Twilio,但与我的问题无关)。你知道吗
我有一个返回的API:数据列表和下一页URL。分页完成后,下一页URL将以空字符串的形式返回。我将获取函数编写为生成器,大致如下所示:
def fetch(url):
while url:
data = requests.get(url).json()
url = data['next_page_uri']
for row in data[resource]:
yield row
这段代码运行得很好,但我想尝试删除while
循环,并用使用next_page_uri
值作为sentinel参数的iter()
调用来替换它。
或者,这可以用yield from
来写吗?你知道吗
我认为这可能是你的意思…但正如评论中所说,这并没有多大帮助:
(我利用这个机会给
raise_for_status()
打了个电话,这将raise
表示不成功,即res.status_code < 400
,响应)不确定它是否“更好”,但可能您将大量重用
fetch_paged
功能注意:许多其他API将此} 属性公开
next_page_uri
放入standard ways中的响应头中,requests
库知道如何处理并通过^{相关问题 更多 >
编程相关推荐