Оболочка Python вызывает избыточные вызовы функций
У меня есть функция, которая загружает файл с данного URL и вызывается из функции более высокого уровня, т.е. main()
,
from requests import get
...
def download_file(url):
response = get(url)
...
<error checks on response>
...
# if no error, write response to file
...
file.write(response)
def main(url):
...
download_file(url)
Тем не менее, я понял, что я должен разместить все проверки ошибок для response
объект за пределами download_file
функция. Итак, я попытался обернуть download_file
функционировать так, чтобы все проверки ошибок происходили вне его.
def check_errors(func):
def check_and_download(url):
response = get(url)
...
<error checks on response>
...
return func(url) # <- I have to call response = get(url) again. That's bad
return check_and_download
Как вы можете видеть, эта обертка вызывает response
позвонить дважды. Один раз за пределами функционала и один раз внутри. Это просто избыточно. Я пытаюсь найти способ, который позволит мне позвонить response
только один раз и загрузите файл с проверкой ошибок вне download_file
функция.
Я чувствую, что это должно быть обычной проблемой для начинающих, но я не могу найти соответствующие вопросы здесь. Любые предложения о том, как правильно с этим бороться?
PS: один из подходов, которые я выбрал, состоял в том, чтобы изменить download_file
функция принять response
вместо объекта или URL, чтобы оболочка могла передать объект ответа с проверкой на ошибки. Однако проблема в том, что download_file
функция должна быть вызвана с response
объект в main()
, Что потребует от меня, чтобы проверить response
объект для ошибок в main()
вместо обертки.