Python urllib.request.urlopen возвращает тип объекта

Я использую Python (3.6.7) urllib.request.urlopen, пытаясь получить некоторый контент из HTTP-запроса к веб-серверу. Вот мой код:

import urllib.request

with urllib.request.urlopen(url='http://httpbin.org/get') as resp:
        ## do something

Однако из этой документации по Python я не совсем понимаю, какой тип данных я получу. Это говорит:

Эта функция всегда возвращает объект, который может работать как менеджер контекста... Для URL-адресов HTTP и HTTPS эта функция возвращает слегка измененный объект http.client.HTTPResponse.

В документе http.client.HTTPResponse говорится:

Класс, экземпляры которого возвращаются при успешном соединении. Не создается непосредственно пользователем.

Так из документов, говорит ли нам, что urllib.request.urlopen будет возвращать строковый объект, байтовый объект или файловый объект? После распечатки содержимого ответа это кажется байтовым объектом. Но если мы хотим использовать функцию Python напрямую, без необходимости каждый раз печатать возвращаемый объект, только читая документы,

  • Есть ли способ узнать, какой тип объекта мы ожидаем от каждой функции, такой как этот urllib.request.urlopen?
  • почему http.client.HTTPResponse является байтовым объектом? это упомянуто где-нибудь в документах?

Причина, по которой я хотел бы знать, какой тип данных возвращается функцией, такой как urllib.request.urlopen, заключается в том, что когда мне нужно использовать значение, возвращаемое этой функцией, в качестве входных данных для другой функции, мне нужно знать тип данных, будь то int, str, dict, byte или т. д. (Например, распечатывая переменную 'resp', она выводит b'xxx, который выглядит как байтовый объект, но в документации он говорит, что это объект http.client.HTTPResponse.)

0 ответов

Другие вопросы по тегам