Загружаем изображение…
Знали, что Python может сам закрывать ресурсы без with?
Если работаешь с ресурсами, у которых есть
.close(), но они не являются контекстными менеджерами, их всё равно можно безопасно обернуть, без try/finally.Python даёт для этого contextlib.closing:
from contextlib import closing
from urllib.request import urlopenОткрываем ресурс и гарантируем закрытие:
with closing(urlopen("https://example.com")) as r:
print(r.status)
Это заменяет ручную очистку:
r = urlopen("https://example.com")
try:
print(r.status)
finally:
r.close()Если у объекта есть
close() — closing() превращает это в безопасный и линейный код.Python Ready | #совет