Перейти к основному содержимому

Python - язык общего назначения

Разработчику Архитектору

Play ITЗагрузка интерактивного демо…


О языке

Что такое Python?

Python — это язык программирования со следующими особенностями:

  • Типизация — динамическая, сильная; вывода типов нет; аннотации типов опциональны, статическую проверку дают mypy, pyright и аналоги.
  • Парадигма — мультипарадигменный — императивный, процедурный, ООП, функциональный, асинхронный, метапрограммирование.
  • Уровень — высокоуровневый.
  • Выполнение — интерпретируемый (CPython: исходник → байт-код → виртуальная машина); альтернативы — PyPy (JIT), Cython и Nuitka (компиляция в нативный код).
  • Память — автоматическая: подсчёт ссылок + сборщик циклических ссылок (GC).
  • Платформа — кроссплатформенный; управляемый runtime (CPython, PyPy); Jython и IronPython — для JVM и .NET.
  • Формат разработки — скриптовый: .py можно запустить без сборки; для крупных проектов — виртуальное окружение, пакеты и менеджеры зависимостей (pip, Poetry, uv).
  • Направление — универсальный — веб-бэкенд, DevOps и автоматизация, Data Science, ML/AI, научные вычисления, скриптинг.
  • REPL — есть — интерактивный режим python / python3 в терминале, IPython, Jupyter Notebook и JupyterLab.
  • Поколение — классический (с 1991 года), активно развивающийся (процесс PEP, ветка 3.x).
  • Параллелизм и асинхронность — потоки (threading) и процессы (multiprocessing); в CPython GIL ограничивает параллельное выполнение CPU-bound в потоках; нативная асинхронность — async/await и asyncio.
  • Безопасность — относительно "безопасный": сильная динамическая типизация, исключения вместо неопределённого поведения; нет гарантий memory safety как у Rust; GIL снижает риск data races в потоках, но не защищает от логических ошибок.

Если какой-то пункт из списка непонятен — подробные определения и примеры в Язык программирования.

Python (в русскоязычных текстах часто питон или пайтон) — высокоуровневый мультипарадигменный язык общего назначения с динамической строгой типизацией (утиная типизация на практике) и автоматическим управлением памятью. Язык ориентирован на производительность разработчика, читаемость кода и переносимость программ между платформами.

С момента появления в начале 1990-х Python стал одним из самых влиятельных языков: от системного скриптинга и DevOps до веб-разработки, анализа данных и машинного обучения. В энциклопедии подробнее о парадигмах — ниже в этом разделе; об эталонной реализации — архитектура интерпретатора; об эволюции — история языка.

В русскоязычных чатах язык часто называют питон — это разговорное имя, в официальных текстах сохраняют Python. Мемы и репутация в форумах — история Python.

В Python всё является объектом — функции, модули, классы и даже типы. Синтаксис ядра намеренно минималистичен; блоки кода выделяются отступами, без фигурных скобок в стиле C. Исходники обычно исполняются через интерпретатор (чаще всего CPython): код компилируется в байт-код и выполняется на виртуальной машине, поэтому Python одновременно называют интерпретируемым и скриптовым языком.

Типичный компромисс — скорость и потребление памяти по сравнению с компилируемыми языками вроде C или C++ на CPU-bound задачах; за это платят быстрым циклом разработки, богатой стандартной библиотекой и огромным каталогом пакетов PyPI.

ХарактеристикаКратко
Парадигмыимперативная, процедурная, ООП, функциональная, асинхронная, метапрограммирование
Типизациядинамическая, сильная; аннотации и mypy — опционально
Памятьподсчёт ссылок + сборщик циклов
Эталонная реализацияCPython (PSF, лицензия Python Software Foundation License)
Развитие языкапроцесс PEP — публичные предложения по изменениям
РасширенияC/C++, Cython; альтернативные интерпретаторы — PyPy, Jython, IronPython

Среди архитектурных особенностей, которые определяют повседневную разработку — полная интроспекция (типы и атрибуты доступны в runtime), исключения как основной механизм ошибок, модули и пакеты для разбиения кода, GIL в классическом CPython (один поток исполняет байт-код Python одновременно — подробнее в многопоточности) и богатые встроенные структуры (list, tuple, dict, set).


Интерпретируемый язык

Python является интерпретируемым языком, что означает: исходный код не компилируется заранее в машинный код, а выполняется построчно (или блоками) специальным интерпретатором во время запуска программы.

Компилируемые языки (например, C, C++, Rust, Go) требуют предварительного этапа — компиляции — весь исходный код анализируется, проверяется на соответствие синтаксису и семантике, и затем транслируется в машинный код (или промежуточное представление, как в случае C# → IL). Только после успешного завершения этого этапа создаётся исполняемый файл, который можно запустить. Любая синтаксическая или типовая ошибка на этапе компиляции приводит к отказу в генерации исполняемого модуля — программа не запускается вовсе.

Интерпретируемые языки (например, Python, JavaScript в браузере, Ruby) не проходят отдельного этапа компиляции перед запуском. Вместо этого специальная программа — интерпретатор — считывает исходный код и выполняет его инструкции последовательно, по мере чтения. Это означает, что синтаксическая ошибка, встречающаяся внутри программы, не препятствует выполнению предшествующих корректных строк. Интерпретатор остановится только в момент обнаружения ошибки, сохранив уже произведённые эффекты.

print("Строка 1 выполнена")
print("Строка 2 выполнена")
print(1 / 0) # Ошибка времени выполнения: деление на ноль
print("Строка 4 — не будет достигнута")

При запуске интерпретатор выполнит первые два print, лишь затем обнаружит невозможность вычисления 1 / 0 и прервёт выполнение с исключением ZeroDivisionError. Строка 4 не будет достигнута.

Аналогичный эффект наблюдается и при синтаксической ошибке:

print("Строка 1 выполнена")
print("Строка 2 выполнена")
print("Не закрытая кавычка # <-- синтаксическая ошибка
print("Строка 4")

Интерпретатор Python выполнит первые две строки, и только при попытке разобрать третью — остановится с SyntaxError. В компилируемом же языке такая ошибка не позволила бы даже начать выполнение программы: этап анализа завершился бы неудачей ещё до генерации исполняемого кода.

На практике путь исходника до результата можно описать так:

АЛГОРИТМ ЗапуститьСкриптPython(файл.py)
исходник := прочитать(файл.py)
токены := лексический_анализ(исходник)
дерево := синтаксический_анализ(токены)
байткод := скомпилировать_в_байткод(дерево) // часто кэш в .pyc
пока есть_инструкции(байткод)
выполнить_на_PVM(текущая_инструкция)
конец
КОНЕЦ
ЭтапСмысл
лексический_анализТекст → токены (if, имя, число)
синтаксический_анализТокены → AST
PVMВиртуальная машина CPython исполняет байт-код
importЗагрузка других модулей; при первом импорте возможна запись .pyc в __pycache__

Полная схема от .py до результата (источник → компиляция → кэш → Import System → PVM) — в архитектуре интерпретатора.

На практике этот процесс включает несколько этапов:

  • Лексический анализ — преобразование исходного кода в последовательность токенов.
  • Синтаксический анализ — построение абстрактного синтаксического дерева (AST).
  • Компиляция в байткод — генерация платформо-независимого промежуточного представления, хранящегося в файлах .pyc.
  • Интерпретация байткода — выполнение на виртуальной машине CPython (PVM — Python Virtual Machine).

Такой подход позволяет достигать высокой степени переносимости: один и тот же код может выполняться на любой платформе, где установлен совместимый интерпретатор. Однако за это приходится платить снижением производительности по сравнению с компилируемыми языками, такими как C или Rust.

Важно отметить, что хотя Python часто называют "интерпретируемым", его реализация всё же включает элементы компиляции — именно поэтому корректнее говорить о гибридной модели исполнения: сначала компиляция в байткод, затем интерпретация. Но, в большинстве учебников мы увидим именно указание как "интерпретируемый", так что будем считать таковым.


Ввод и вывод

Первые команды, с которыми начинает работать любой обучающийся этому языку программирования - это print() и input() - буквально "ввод" и "вывод":

  • print(x) - функция, выводящая значение x в терминале;
  • input() - функция для считывания того, то введёт пользователь в консоли.

На ЕГЭ по информатике и олимпиадах почти каждая программа строится на этой паре плюс чтение массива — подробный разбор шаблонов input(), map, split и типичных ошибок формата вывода — в Алгоритмы на Python — ЕГЭ и олимпиадка.

К примеру, мы можем спросить у пользователя его имя, и вывести в составе предложения:

name = input("Как тебя зовут? ")
print("Привет, " + name + "! Ты молодец!")

Здесь name - переменная, куда мы и записываем результат выполнения функции input(). В переменную можно записывать значения напрямую без указания конкретного типа.

Python реализует динамическую типизацию, что означает — тип переменной определяется во время выполнения программы на основании значения, присвоенного переменной, а не указывается явно в её объявлении.

x = 5 # x имеет тип int
x = "hello" # теперь x имеет тип str

Присваивание значения переменной происходит по шаблону:
<имя_переменной> = <значение>

Эта особенность значительно ускоряет процесс написания кода и делает его более лаконичным. Однако она также перекладывает ответственность за проверку типов на разработчика и инструменты анализа кода. В отличие от строгих статических систем (например, в Java или TypeScript), Python не предотвращает ошибки типизации на этапе компиляции.

Вывод значения в консоль:
print(<выражение>)

Вывод нескольких значений через пробел:
print(<выражение>, <выражение>, ..., sep="<разделитель>")

Пример:

print("Имя:", name, "Возраст:", age)

Считывание строки от пользователя:
<имя_переменной> = input(<приглашение>)

Пример:

city = input("Из какого вы города? ")

Текст, который вводит пользователь, даже будучи числами, будет распознан в виде строки. Поэтому для учёта конкретного типа, нужно использовать преобразование.

Преобразование ввода к числу:
<имя_переменной> = int(input(<приглашение>))
<имя_переменной> = float(input(<приглашение>))

Пример:

number = int(input("Введите число: "))

Форматированный вывод с f-строкой:
print(f"<текст>&#123;<имя_переменной>&#125;<текст>")

Пример:

print(f"Привет, {name}! Тебе {age} лет.")

Вывод без перевода строки:
print(<выражение>, end="<символы>")

Пример:

print("Ожидание", end="...")

Типизация

Python обладает сильной типизацией, то есть не допускает автоматические неявные преобразования между несовместимыми типами. Например, выражение 5 + "3" вызовет исключение TypeError, поскольку операция сложения между числом и строкой не определена.

Попытка несовместимой операции между типами:
<числовое_значение> + <строковое_значение> → вызывает TypeError

Пример ошибки:

result = 5 + "3" # TypeError: unsupported operand type(s) for +: 'int' and 'str'

Явное преобразование типов:
<целевое_значение> = <тип>(<исходное_значение>)

Примеры:

number = int("42") # строка → целое число
text = str(100) # число → строка
floating = float("3.14") # строка → число с плавающей точкой

Для тех случаев, когда требуется контроль типов, начиная с версии 3.5, Python поддерживает аннотации типов (typing module), позволяя использовать статические анализаторы (например, mypy) для проверки кода вне времени выполнения.

Аннотация переменной:
<имя_переменной>: <тип> = <значение>

Пример:

name: str = "Алиса"
age: int = 30
height: float = 1.75
is_student: bool = True

Аннотация функции (аргументы и возвращаемое значение):
def <имя_функции>(<аргумент>: <тип>) -> <тип_возврата>: ...

Пример:

def greet(name: str) -> str:
return f"Привет, {name}!"

Аннотация функции с несколькими аргументами:
def <имя_функции>(<арг>: <тип>, <арг>: <тип>) -> <тип_возврата>: ...

Пример:

def add(a: int, b: int) -> int:
return a + b

Аннотация для отсутствующего возвращаемого значения:
def <имя_функции>(...) -> None: ...
Пример:

def log_message(msg: str) -> None:
print(f"[LOG] {msg}")

Аннотация списка:
<имя>: List[<тип>] = [...]
Пример:

from typing import List
scores: List[int] = [85, 92, 78]

Аннотация словаря:
<имя>: Dict[<тип_ключа>, <тип_значения>] = {...}
Пример:

from typing import Dict
user_data: Dict[str, str] = {"name": "Борис", "email": "boris@example.com"}

Аннотация опционального значения:
<имя>: Optional[<тип>] = ...
Эквивалентно Union[<тип>, None]
Пример:

from typing import Optional
middle_name: Optional[str] = None

Аннотация нескольких допустимых типов:
<имя>: Union[<тип1>, <тип2>] = ...
Пример:

from typing import Union
identifier: Union[int, str] = "ID123"

Мультипарадигменность

Мультипарадигменный язык изначально задумывается как инструмент, в котором можно сочетать идеи из разных школ программирования: ни одна парадигма не закрывает все задачи "самым простым" способом, поэтому Python сознательно не навязывает единственный стиль.

В узком смысле так называют языки, спроектированные именно для мультипарадигменного программирования (как Oz или C++). В широком смысле под этим понимают любой язык с поддержкой более одной парадигмы — к этой группе относится и Python.

В одном проекте на Python обычно сочетают:

ПарадигмаКак проявляется в Python
Процедурная / структурнаяфункции, модули, последовательные скрипты
Объектно-ориентированнаяклассы, наследование, инкапсуляция; встроенные типы тоже объекты
Функциональнаяmap, filter, functools.reduce, генераторы, lambda, итераторы (itertools)
Асинхроннаяasync / await, asyncio
Метапрограммированиедекораторы, метаклассы, дескрипторы, __getattr__
Аспектно-ориентированная (частично)декораторы; полноценнее — сторонние фреймворки

Задачи обобщённого программирования решаются за счёт динамической типизации и утиной типизации ("если объект ведёт себя как утка — это утка"). Контрактное и логическое программирование при необходимости подключают библиотеками, а не ядром языка.

Такая гибкость позволяет подбирать стиль под задачу: для пайплайнов данных удобны генераторы и comprehensions, для предметной области — классы и пакеты.

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


Простота синтаксиса

Синтаксис Python минималистичен и близок к псевдокоду. Отсутствие фигурных скобок, обязательное использование отступов для обозначения блоков кода, лаконичные конструкции (with, for, if) — всё это способствует высокой читаемости.

if user.is_active and user.has_permission:
send_notification(user)

Код легко читается даже теми, кто не владеет языком, что соответствует Дзену Python: "Читаемость имеет значение" (Readability counts).

Язык назван в честь британского шоу "Летающий цирк Монти Пайтона", а не в честь змеи — отсюда шутливые примеры в документации (spam, eggs вместо foo / bar). Подробнее о философии и афоризмах Тима Петерса — в статье Философия Python — Zen of Python.

Малое ядро и большая стандартная библиотека

Гвидо ван Россум проектировал Python как легко расширяемый язык с компактным ядром и обширной стандартной библиотекой — в противовес опыту ABC, где вся функциональность была "вшита" в монолитную среду.

Отсюда популярность Python как "клея" между приложениями и библиотеками на C/C++.


Кроссплатформенность

Python доступен практически на всех современных платформах — Windows, macOS, Linux, а также на мобильных и встраиваемых системах. Интерпретатор можно запустить в контейнере, на сервере, в облаке или даже в браузере (через Pyodide). Это делает Python идеальным выбором для создания портируемых решений.

На Windows скрипт hello.py запустится через командную строку (cmd) или PowerShell:

python hello.py

или

py hello.py

macOS поставляется с предустановленным Python, но рекомендуется использовать актуальную версию Python 3.x. В macOS команда python может указывать на Python 2. Всегда используйте python3 для явного вызова третьей версии.

python3 hello.py

Большинство дистрибутивов Linux уже содержат Python 3. Проверьте:

python3 --version
python3 -c "print('ok')"

Вторая команда подтверждает, что интерпретатор исполняет код (в выводе — ok).

Запуск:

python3 hello.py

Широкая стандартная библиотека и экосистема

Python поставляется с обширной стандартной библиотекой (часто называемой "batteries included"), включающей модули для работы с файлами (os, pathlib), сетью (http, socket), датами (datetime), сериализацией (json, pickle), многопоточностью (threading, asyncio) и многим другим.

Помимо этого, менеджер пакетов pip устанавливает пакеты из PyPI (Python Package Index, pypi.org) — центрального каталога ПО на Python, аналога CPAN для Perl и PEAR для PHP. Каталог ведёт Python Software Foundation; с 2018 года веб-интерфейс обслуживает платформа Warehouse. История distutils, метаданных PEP 241 и цепочки pip / setuptools — в архитектуре экосистемы. На 2025 год в индексе сотни тысяч проектов: от requests и flask до numpy, pandas, scikit-learn и tensorflow.


Поддержка разных стилей программирования

Как уже упоминалось, Python не навязывает единственный стиль разработки. Разработчик может выбирать между функциональным, объектно-ориентированным или процедурным подходом. Это делает язык универсальным: он подходит как для быстрой прототипизации, так и для проектирования масштабируемых систем.

Python предоставляет мощный интерактивный режим, известный как REPL (Read-Eval-Print Loop). Он позволяет выполнять команды по одной, немедленно видеть результат и экспериментировать с кодом без необходимости создавать файлы. Современные инструменты, такие как IPython и Jupyter Notebook, расширяют возможности REPL, добавляя подсветку, автодополнение, визуализацию и запись сессий.


Структура скрипта

Давайте рассмотрим структуру простого скрипта. Простейший скрипт на Python представляет собой последовательность инструкций, сохранённых в файле с расширением .py.

Рассмотрим базовую структуру:

Код ITЗагрузка примера кода…

Этот шаблон включает:

  • Шебанг (#!) — указание интерпретатора (для Unix-систем),
  • Docstring — документация модуля,
  • Импорты — подключение внешних зависимостей,
  • Константы и данные,
  • Функции и классы,
  • Точку входа — условие if __name__ == "__main__", которое гарантирует, что код будет выполнен только при прямом запуске, а не при импорте как модуля. Разбор с примерами — if name == "main" — точка входа при запуске файла — if name == "main". Сравнение с другими языками — таблица в той же статье.

Такая структура способствует созданию модульного, тестируемого и повторно используемого кода.


Применение Python

Где применяется Python?


Веб-разработка

Python используется для создания серверной части (backend) веб-приложений, API, микросервисов и полноценных веб-платформ.

ФреймворкТипОсобенностиТипичное применение
DjangoПолнофункциональныйВстроенный ORM, админ-панель, аутентификация, маршрутизацияКрупные веб-платформы, социальные сети, контент-менеджмент
FlaskМикрофреймворкМинималистичный, гибкая архитектура, расширения по необходимостиЛёгкие API, прототипы, микросервисы
FastAPIСовременныйАсинхронность, автоматическая документация OpenAPI, строгая типизацияВысоконагруженные API, микросервисная архитектура

В веб-разработке типичными задачами являются создание RESTful и GraphQL API, разработка веб-сервисов и микросервисов, интеграция с базами данных, и работа с аутентификацией. К примеру, Instagram использует Django как основу своего backend, обрабатывая миллионы запросов в секунду.


Data Science и анализ данных

Python можно назвать стандартом в аналитике и научных вычислениях благодаря удобным инструментам для работы с данными.

БиблиотекаНазначениеКлючевые возможности
PandasТабличные данныеDataFrame, фильтрация, группировка, объединение таблиц — обзор, справочник, примеры
NumPyЧисловые вычисленияМногомерные массивы, векторные операции, линейная алгебра — примеры
MatplotlibВизуализацияЛинейные графики, гистограммы, диаграммы рассеяния — глава, примеры
SeabornВизуализацияСтатистические графики, тепловые карты, улучшенный стиль
PlotlyИнтерактивная визуализацияВеб-графики, анимация, дашборды

Типичные задачи здесь - очистка и преобразование сырых данных, статистический анализ (среднее, медиана, корреляция), визуализация трендов и распределений, подготовка данных для машинного обучения. К примеру, аналитики в Spotify используют Pandas для обработки данных о прослушиваниях, чтобы формировать рекомендации.


Машинное обучение и искусственный интеллект

Python доминирует в области ML/AI благодаря богатой экосистеме специализированных библиотек.

ФреймворкУровеньСценарии использования
Scikit-learnКлассическое MLКлассификация, регрессия, кластеризация, предобработка данных
TensorFlowГлубокое обучениеПродакшн-развёртывание, мобильные устройства, TPU-ускорение
PyTorchГлубокое обучениеНаучные исследования, динамические вычислительные графы
KerasВысокоуровневыйБыстрое прототипирование нейросетей поверх TensorFlow
TransformersNLPПредобученные модели языка (BERT, GPT), обработка текста

Типичные задачи здесь - классификация изображений и текста, прогнозирование временных рядов (продажи, цены), генерация контента (текст, изображения), анализ тональности отзывов. К примеру, Tesla использует PyTorch для разработки алгоритмов автопилота.


Автоматизация и DevOps

Python хорош для написания скриптов, упрощающих рутинные задачи системного и прикладного администрирования.

Примеры:

  • Массовое переименование файлов (os, pathlib) — готовые скрипты с разбором в Lab — файлы и текст.
  • Обработка CSV/JSON/XML (csv, json, xml.etree) — Python — работа с файлами и текстом (stdlib), таблицы — Pandas в Lab.
  • Архивация и копирование (shutil, zipfile).
  • Управление инфраструктурой: Ansible (написан на Python).
  • Парсинг веб-страниц — Scrapy, BeautifulSoup, requests.
  • CI/CD — запуск тестов, деплой, проверка зависимостей.
  • Мониторинг — сбор метрик CPU/RAM (psutil), проверка доступности сайтов (requests, ping3).
КатегорияБиблиотекаПрименение
Файловая системаos, pathlibНавигация по директориям, создание путей, проверка существования
Работа с форматамиcsv, json, xml.etreeЧтение и запись структурированных данных
Архивацияshutil, zipfileКопирование, перемещение, сжатие файлов
Веб-запросыrequestsHTTP-запросы, работа с API, загрузка ресурсов
ПарсингBeautifulSoup, ScrapyИзвлечение данных из HTML, краулинг сайтов
Системная информацияpsutilМониторинг ресурсов: процессор, память, сеть

Скрипт на Python может каждый день скачивать отчёты с API, конвертировать их в Excel и отправлять по почте — без участия человека.


Графические интерфейсы (GUI)

Несмотря на то, что Python не является основным языком для GUI, он предлагает несколько надёжных решений для создания десктопных приложений.

БиблиотекаТехнологияПреимуществаОграничения
TkinterВстроеннаяПростота, не требует установки дополнительных пакетовУстаревший внешний вид, ограниченные возможности — см. Tkinter и GUI, примеры в Lab
PyQt / PySideQtСовременный интерфейс, богатый набор виджетовЛицензионные нюансы, больший размер приложения
KivyOpenGLКроссплатформенность включая мобильные устройстваСпецифический подход к разработке, крутая кривая обучения

Типичные задачи в части GUI - создание внутренних утилит для бизнеса, интерфейсы для аналитических инструментов, обучающие программы и игры. Для учебных окон и форм на Python см. Tkinter и GUI и галерею примеров. К примеру, VLC Media Player частично использует PyQt для своих инструментов настройки.


А разработка игр?

Хотя Python не предназначен для AAA-игр, он подходит для обучения, прототипирования и 2D-игр.

ИнструментТипПоддерживаемые платформыСложность освоения
Pygame2D-движокWindows, Linux, macOSНизкая
Arcade2D-движокWindows, Linux, macOSНизкая
GodotПолноценный движокВсе основные платформы + мобильныеСредняя

Так можно обучаться основам гейм-дева, создавать головоломки, арканоиды, змейки, демо-проекты, мини-игры. К примеру, игра Battlefield 2 использовала Python для скриптования поведения персонажей и управления сетью.


Научные вычисления

Python широко применяется в науке, инженерии и математике благодаря точным и производительным библиотекам.

БиблиотекаОбластьВозможности
NumPyОбщие вычисленияМассивы, матричные операции, генерация случайных чисел
SciPyНаучные алгоритмыОптимизация, интегрирование, обработка сигналов
SymPyСимвольная математикаАналитические вычисления, упрощение выражений
AstropyАстрономияРабота с астрономическими данными, координатные системы
BiopythonБиоинформатикаАнализ ДНК, работа с биологическими форматами

Типичные задачи здесь — моделирование физических процессов, обработка экспериментальных данных, решение дифференциальных уравнений, анализ сигналов (звук, ЭЭГ). К примеру, NASA использует Python для обработки данных с космических аппаратов.

NumPy и SciPy считают с числами; SymPy — с формулами в буквах (корни уравнения, производная, интеграл). Готовые скрипты SymPy с разбором каждой строки — SymPy — уравнения и производные. Численные массивы — NumPy — массивы и матрицы; таблицы и графики — Pandas, Matplotlib.


Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.