········:class:'PreparedRequest
········''prepare_cookies'' не возымеют эффекта, если только заголовок "Cookie"
········не будет удален заранее."""
········if isinstance(cookies, cookielib.CookieJar):
············self._cookies = cookies
········else:
············self._cookies = cookiejar_from_dict(cookies)
········cookie_header = get_cookie_header(self._cookies, self)
········if cookie_header is not None:
············self.headers['Cookie'] = cookie_header
Эти детали могут показаться незначительными, но они позволяют создать интуитивно понятный API.
Примеры из стиля Requests
Примеры стиля из Requests демонстрируют использование множеств (по нашему мнению, о них незаслуженно забывают!), мы также взглянем на модуль requests.status_codes module — он задействуется для упрощения стиля остального кода и позволяет избежать применения жестко закодированных кодов состояния HTTP в остальных местах.
Мы еще не приводили пример использования множеств в Python. Множества в Python ведут себя так же, как и множества в математике: вы можете выполнить операции вычитания, объединения (с помощью оператора ИЛИ) и пересечения (с помощью оператора И):
>>> s1 = set((7,6))
>>> s2 = set((8,7))
>>> s1
{6, 7}
>>> s2
{8, 7}
>>> s1 — s2 # разность множеств
{6}
>>> s1 | s2 # объединение множеств
{8, 6, 7}
>>> s1 & s2 # пересечение множеств
{7}
Рассмотрим пример работы с множествами, вы можете найти его в конце этой функции из файла cookies.py (рядом с пометкой
Файл status_codes.py нужен только для того, чтобы создать объект, который может искать коды состояний по атрибуту. Мы сначала покажем определение словаря в файле status_codes.py, а затем — фрагмент кода файла sessions.py, в котором словарь используется.
Вся эта работа нужна для того, чтобы создать словарь с кодами состояний. Для чего? Использование словаря вместо цифр на протяжении всего кода (что чревато опечатками) позволяет повысить читаемость, а также хранить все эти числа в одном файле. Поскольку все числа, представляющие коды, записаны в словарь, каждое из них появится всего один раз. Вероятность опечаток при этом значительно снижается.
Преобразование ключей в атрибуты вместо их использования в качестве строк в словаре также снижает риск опечаток. Рассмотрим пример кода из файла sessions.py, который гораздо легче прочитать, когда в нем используются слова, а не числа.