Runestone Book Python编程基础中有一个名为response_with_catching
的组件。该代码可用here。该组件通过保存响应并在可能的情况下返回缓存的数据来防止对API的重复调用。
如果缓存的数据可用于API调用,则将执行以下代码:
return requests.Response(permanent_cache[cache_key], full_url)
此行的目的是什么?
documentation中没有明确说明如何将request.response()
与参数一起使用。
例如,在一个特定的运行中,参数permanent_cache
和full_url
为:
permanent_cache[cache_key] =
[{"word":"nappy","score":707,"numSyllables":2},
{"word":"scrappy","score":702,"numSyllables":2}]
full_url = https://api.datamuse.com/words?rel_rhy=happy&max=2
执行该行时出现问题,例如运行
full_url = "https://api.datamuse.com/words?rel_rhy=happy&max=2"
x = requests.Response([{"word":"nappy","score":707,"numSyllables":2},
{"word":"scrappy","score":702,"numSyllables":2}], full_url)
引发错误
TypeError: __init__() takes 1 positional argument but 3 were given
答案 0 :(得分:0)
在对Runestone互动书 Python编程基础中使用的行requests.response(...)
引发的错误进行了进一步研究之后,事实证明这本书没有使用官方python requests
模块。而是使用了受限制的版本,为response_with_catching
列出的代码并不是要在完整的Python环境中使用。通过阅读代码中的注释并不能直接看出这一点。