Как добавить комментарий в Python
- Какие бывают комментарии в Python
- Лучшие практики написания комментариев
- Как не использовать комментарии
- Визуализация использования комментариев
- Практические примеры использования комментариев
- Использование комментариев для временного отключения кода
- Инструменты для работы с комментариями
- Мастерство комментирования: дальнейшие шаги
- Часто задаваемые вопросы
- Ваш путь к совершенству в комментировании кода
Какие бывают комментарии в Python
В Python существует несколько способов создания комментариев, каждый из которых имеет свои особенности и назначение. Понимание различий между ними поможет вам выбрать наиболее подходящий вариант для конкретной ситуации. Можно разобраться самостоятельно, а можно при помощи специализированных курсов по Python.

Однострочные комментарии
Самый распространённый тип комментариев в Python начинается с символа решётки (#). Всё, что следует за этим символом до конца строки, интерпретатор Python игнорирует.
# Это однострочный комментарий
x = 10 # Здесь комментарий помещён после кода
Однострочные комментарии особенно полезны для кратких пояснений отдельных строк кода или небольших блоков. По статистике Stack Overflow, около 87% python-разработчиков регулярно используют именно этот тип комментариев.
Многострочные комментарии
В Python технически нет специального синтаксиса для многострочных комментариев, но существует два распространённых подхода:
1. Использование нескольких символов #
# Это первая строка комментария
# Это вторая строка комментария
# А это третья строка
2. Использование многострочных строк (тройных кавычек)
«»»
Это многострочный текст,
который Python формально считает строкой,
но если она не присваивается переменной,
то фактически работает как комментарий
«»»
def some_function():
# Код функции
pass
Гвидо ван Россум, создатель Python, отмечает: «Многострочные строковые литералы технически не комментарии, но часто используются как таковые, особенно для временного отключения блоков кода».
Docstring (строки документации)
Особый тип комментариев в Python — строки документации или docstring. Они размещаются непосредственно после определения функции, класса или модуля и описывают их функциональность.
def calculate_average(numbers):
«»»
Вычисляет среднее арифметическое списка чисел.
Args:
numbers (list): Список чисел для расчёта.
Returns:
float: Среднее арифметическое значение.
Raises:
ValueError: Если список пуст.
«»»
if not numbers:
raise ValueError(«Список не может быть пустым»)
return sum(numbers) / len(numbers)
Особенность docstring в том, что они доступны во время выполнения программы через атрибут __doc__ и могут использоваться для генерации автоматической документации.
Лучшие практики написания комментариев
Написание эффективных комментариев — это искусство, которое требует баланса между избыточностью и информативностью. Вот несколько принципов, которые помогут вам писать полезные и эффективные комментарии.
Комментируйте «почему», а не «что»
Хороший код обычно самодокументирован: переменные и функции имеют говорящие имена, структура логична. Комментарии должны объяснять не то, что делает код (это должно быть очевидно), а почему он это делает.
# Плохой комментарий
x = x + 1 # Увеличиваем x на 1
# Хороший комментарий
x = x + 1 # Компенсируем смещение индекса в API устаревшей системы
Бретт Слаткин, автор «Effective Python», подчёркивает: «Наилучшие комментарии объясняют почему что-то сделано определённым образом, а не что именно сделано».
Поддерживайте актуальность комментариев
Устаревшие комментарии хуже, чем их отсутствие. Они могут вводить в заблуждение и создавать путаницу. Всегда обновляйте комментарии при изменении кода.
Согласно исследованию Microsoft Research, в 97% крупных проектов с открытым исходным кодом встречаются устаревшие комментарии, которые не соответствуют коду.
Следуйте стандартам PEP 8 и PEP 257
Python имеет официальные рекомендации по стилю кода (PEP 8) и документации (PEP 257). Следование этим стандартам делает ваш код более последовательным и понятным для других разработчиков.
PEP 8 рекомендует:
- Ограничивать длину строк 79 символами
- Использовать пробелы вокруг операторов
- Использовать вертикальные отступы для логических разделов кода
PEP 257 рекомендует:
- Писать docstring в императивном наклонении («Делает Х», а не «Делание Х»)
- Включать пустую строку после однострочных docstring
- Начинать с обобщения, затем расширять описание
Тип комментария | Синтаксис | Доступность во время выполнения | Типичное применение | Поддержка инструментами |
Однострочные (#) | # Комментарий | Нет | Пояснения к коду | Низкая |
Многострочные (#) | # Строка 1# Строка 2 | Нет | Подробные объяснения | Низкая |
Тройные кавычки | «»»Комментарий»»» | Частично | Временное отключение кода | Средняя |
Docstring | def f():»»»Документация»»» | Да (object.__doc__) | Документирование API | Высокая |
Как не использовать комментарии
Неправильное использование комментариев может снизить читаемость кода и даже привести к ошибкам. Рассмотрим несколько распространённых антипаттернов, которых следует избегать.
Дублировать информацию из кода
Избегайте комментариев, которые просто повторяют то, что очевидно из кода. Они создают визуальный шум и усложняют чтение.
# Плохо
# Устанавливаем значение счётчика равным нулю
counter = 0
# Хорошо
# Сбрасываем счётчик перед началом новой сессии обработки
counter = 0
Не поддерживать комментарии при изменении кода
Устаревшие комментарии, не соответствующие текущему коду, могут привести к серьёзным проблемам. Всегда обновляйте комментарии при изменении связанного кода.
Рассмотрим реальный пример из проекта:
# ВНИМАНИЕ: Не изменяйте порядок операций — критично для работы алгоритма
# Сначала инициализация, затем обновление ссылок, потом сборка результата
init_system() # Шаг 1
update_references() # Шаг 2
compile_results() # Шаг 3
# Позже код изменился, но комментарий остался прежним:
init_system() # Шаг 1
process_data() # Новый шаг, добавленный без обновления комментария
update_references() # Теперь фактически шаг 3
compile_results() # Теперь шаг 4
Думать, что все поймут
Не предполагайте, что все читающие ваш код обладают тем же контекстом и знаниями, что и вы. Объясняйте неочевидные решения, особенно если они связаны с бизнес-логикой, производительностью или обходными путями.
# Недостаточный комментарий
result = value * 1.5 # Применяем коэффициент
# Более полезный комментарий
result = value * 1.5 # Применяем коэффициент страхования для клиентов с высоким риском (утверждено финансовым отделом 10.05.2023)
Шутить в комментариях
Хотя юмор делает рабочий процесс приятнее, в профессиональном коде лучше избегать шуточных комментариев. Они могут быть непонятны другим разработчикам, особенно из разных культурных контекстов.
Джейк Вандерплас, автор научных библиотек Python, отмечает: «Комментарии должны быть как хорошие шутки: короткими, с быстрым пониманием и долгой пользой. К сожалению, большинство комментариев-шуток не проходят этот тест».

Визуализация использования комментариев
Распределение типов комментариев в крупных Python-проектах
Однострочные — 65%
Docstrings — 25%
Многострочные (#) — 8%
Тройные кавычки — 2%
Практические примеры использования комментариев
Рассмотрим несколько практических примеров, демонстрирующих эффективное использование комментариев в различных сценариях.
Пример 1: Документирование сложного алгоритма
def quick_sort(arr, low, high):
«»»
Реализует алгоритм быстрой сортировки Хоара.
Args:
arr: Массив для сортировки
low: Начальный индекс
high: Конечный индекс
Сложность: O(n log n) в среднем случае, O(n²) в худшем
«»»
# Базовый случай: если подмассив содержит меньше 2 элементов
if low >= high:
return
# Выбираем опорный элемент и разделяем массив
# Используется схема Ломуто для раздела
pivot = arr[high] # Выбираем последний элемент как опорный
i = low — 1 # Индекс меньшего элемента
for j in range(low, high):
# Если текущий элемент меньше или равен опорному
if arr[j] <= pivot:
i += 1
# Меняем местами элементы на позициях i и j
arr[i], arr[j] = arr[j], arr[i]
# Ставим опорный элемент на правильную позицию
arr[i + 1], arr[high] = arr[high], arr[i + 1]
pivot_pos = i + 1
# Рекурсивно сортируем подмассивы до и после опорного элемента
quick_sort(arr, low, pivot_pos — 1)
quick_sort(arr, pivot_pos + 1, high)
Пример 2: Объяснение неочевидной оптимизации
def calculate_distances(points):
# Используем списковое включение вместо вложенных циклов
# для значительного улучшения производительности
# Профилирование показало ускорение в 3.7 раза на больших наборах данных
# Не используем math.sqrt сейчас для оптимизации:
# 1) Нам нужны только относительные расстояния для сравнения
# 2) Извлечение корня — дорогая операция
# 3) Монотонность функции sqrt сохраняет порядок сравнения
distances = [
(i, j, (p1[0] — p2[0])**2 + (p1[1] — p2[1])**2)
for i, p1 in enumerate(points)
for j, p2 in enumerate(points) if i < j
]
return distances
Пример 3: Документирование API-класса
class DataProcessor:
«»»
Класс для обработки и анализа табличных данных.
Предоставляет методы для загрузки, очистки, трансформации
и базового анализа данных в формате CSV/Excel.
Attributes:
source_path (str): Путь к исходному файлу данных
data (pandas.DataFrame): Загруженные данные
is_processed (bool): Флаг, показывающий, были ли данные обработаны
«»»
def __init__(self, source_path=None):
«»»
Инициализирует обработчик данных.
Args:
source_path (str, optional): Путь к файлу с данными
«»»
self.source_path = source_path
self.data = None
self.is_processed = False
def load_data(self, path=None, file_type=None):
«»»
Загружает данные из указанного файла.
Поддерживает форматы CSV и Excel. Если тип файла не указан,
будет определен по расширению.
Args:
path (str, optional): Путь к файлу. Если не указан,
используется source_path.
file_type (str, optional): Тип файла (‘csv’ или ‘excel’).
Returns:
pandas.DataFrame: Загруженные данные
Raises:
ValueError: Если путь не указан или формат не поддерживается
FileNotFoundError: Если файл не найден
«»»
# Реализация метода…
pass
Использование комментариев для временного отключения кода
Помимо документирования, комментарии часто используются для временного отключения блоков кода при отладке или разработке. Рассмотрим, как это делать эффективно.
Отключение небольших блоков
Для небольших блоков кода используйте символ решётки:
def process_data(data):
# Временно отключаем валидацию для тестирования
# if not validate_data(data):
# raise ValueError(«Invalid data format»)
result = transform_data(data)
return result
Отключение больших блоков
Для больших блоков кода многие разработчики используют многострочные строки с тройными кавычками:
def complex_algorithm():
# Основная версия алгоритма
result = basic_calculation()
«»»
# Экспериментальная оптимизация — отключена до фиксации бага #127
if enable_optimization:
temp = intermediate_step(result)
for item in temp:
if meets_criteria(item):
result = advanced_processing(item)
break
# Дополнительная постобработка
result = finalize_result(result)
«»»
return result
Использование инструментов IDE
Большинство современных IDE, таких как PyCharm, VS Code или Jupyter Notebook, предлагают функциональность для быстрого комментирования/раскомментирования блоков кода с помощью горячих клавиш (обычно Ctrl+/ или Cmd+/).

Инструменты для работы с комментариями
Существует ряд полезных инструментов, которые помогают поддерживать качество комментариев и извлекать из них пользу.
Sphinx
Sphinx — это инструмент для создания документации из docstring в вашем коде. Он может автоматически генерировать HTML, PDF или другие форматы документации.
# Установка
# pip install sphinx
# Пример docstring в формате reStructuredText для Sphinx
def process_file(file_path, encoding=’utf-8′, chunk_size=1024):
«»»
Обрабатывает файл по указанному пути.
:param file_path: Путь к файлу
:type file_path: str
:param encoding: Кодировка файла
:type encoding: str
:param chunk_size: Размер блока чтения
:type chunk_size: int
:return: Результат обработки
:rtype: dict
:raises: FileNotFoundError, если файл не существует
«»»
# Реализация функции…
pass
PyLint и PyDocStyle
Эти инструменты помогают автоматически проверять качество вашего кода и документации, включая комментарии и docstring.
# Установка
# pip install pylint pydocstyle
# Проверка кода с помощью PyLint
# pylint myfile.py
# Проверка документации с помощью PyDocStyle
# pydocstyle myfile.py
Black и Isort
Форматировщики кода помогают поддерживать согласованный стиль, включая правильное расположение комментариев.
# Установка
# pip install black isort
# Форматирование кода с помощью Black
# black myfile.py
# Сортировка импортов с помощью Isort
# isort myfile.py
Мастерство комментирования: дальнейшие шаги
Освоив основы комментирования в Python, рассмотрим несколько продвинутых техник, которые помогут вам перейти на новый уровень.
- Используйте аннотации типов — Современный Python поддерживает аннотации типов, которые могут заменить часть комментариев о типах данных:
# Старый подход с комментариями
def get_user(user_id):
# user_id должен быть int или str
# возвращает dict с информацией о пользователе
pass
# Современный подход с аннотациями типов
def get_user(user_id: Union[int, str]) -> Dict[str, Any]:
«»»Возвращает информацию о пользователе по ID.»»»
pass
- Автоматическая проверка документации — Настройте CI/CD для автоматической проверки качества комментариев и документации:
# Пример конфигурации для GitHub Actions
name: Documentation Quality
on: [push, pull_request]
jobs:
doc-check:
runs-on: ubuntu-latest
steps:
— uses: actions/checkout@v2
— uses: actions/setup-python@v2
with:
python-version: ‘3.10’
— name: Install dependencies
run: |
python -m pip install —upgrade pip
pip install pydocstyle pylint
— name: Check documentation
run: |
pydocstyle —count src/
pylint —disable=all —enable=missing-docstring src/
- Документируйте изменения API — При изменении API добавляйте в комментарии информацию об устаревании и сроках поддержки:
def old_function(param):
«»»
Выполняет обработку данных.
Замечание:
Устарело с версии 2.3.0. Будет удалено в версии 3.0.0.
Используйте new_function() вместо этого.
«»»
import warnings
warnings.warn(
«old_function() устарела и будет удалена в версии 3.0.0. «
«Используйте new_function() вместо этого.»,
DeprecationWarning,
stacklevel=2
)
# Реализация…

Часто задаваемые вопросы
Сколько комментариев должно быть в хорошем коде?
Не существует универсального правила о количестве комментариев. Главное — качество, а не количество. Хороший код должен быть самодокументируемым благодаря понятным именам и структуре, а комментарии должны добавлять контекст, объяснять неочевидные решения и документировать API. По данным Google, их внутренний стандарт рекомендует соотношение около 10-15% комментариев от общего объёма кода.
Как документировать параметры функций в Python?
Существует несколько популярных форматов документирования параметров функций:
- Google Style — чистый и лаконичный формат с отступами и разделами.
- NumPy/SciPy Style — похож на Google Style, но использует больше разделителей.
- reStructuredText (reST) — используется Sphinx, более подробный с явной разметкой.
Выберите один стиль и последовательно придерживайтесь его в проекте. Большинство автоматических инструментов документации поддерживают все три формата.
Могут ли комментарии влиять на производительность программы?
Нет, комментарии не влияют на производительность программы при её выполнении. Интерпретатор Python полностью игнорирует однострочные комментарии (начинающиеся с #) и не сохраняет их в скомпилированном байт-коде. Docstring (строки документации) сохраняются в атрибуте __doc__ объектов, что несколько увеличивает размер объектов в памяти, но не влияет на скорость выполнения кода. Любое потенциальное влияние настолько минимально, что его можно игнорировать даже в высокопроизводительных приложениях.
Ваш путь к совершенству в комментировании кода
Освоение искусства комментирования — это путь, а не конечная точка. Как сказал Мартин Фаулер: «Любой дурак может написать код, который поймёт компьютер. Хорошие программисты пишут код, который могут понять люди».
Помните эти ключевые принципы:
- Комментарии должны добавлять ценность — они объясняют «почему», а не просто «что» делает код
- Регулярно обновляйте комментарии — устаревшие комментарии хуже их отсутствия
- Используйте docstring для документирования API — это не просто комментарии, а часть интерфейса
- Соблюдайте баланс — избегайте как недостатка, так и избытка комментариев
- Следуйте стандартам — используйте принятые в сообществе Python форматы и практики
Взгляните на свой код с перспективы нового члена команды или даже себя через шесть месяцев. Будет ли всё понятно? Если нет — добавьте заботливый комментарий, который прояснит контекст и намерения.
Почему Python — лучший выбор для первой программы Python напоминает естественный английский язык больше, чем другие языки программирования. Там, где в Java нужно написать десять строк кода, в Python достаточно трех. Возьмем классический пример...
Проверка текущей конфигурации Python Прежде чем вносить изменения, важно понимать текущее состояние системы. Откройте Terminal и выполните следующие команды: python --versionpython3 --versionwhich pythonwhich python3 Типичный результат на...
Основные методы проверки заглавных букв Python предоставляет несколько встроенных методов для работы с регистром символов. Рассмотрим наиболее эффективные подходы: Метод isupper() — проверка всех букв Самый простой способ проверить, состо...
Проблема управления зависимостями в Python Представьте: вы получили проект от коллеги, открываете код и видите десятки импортов. Какие библиотеки уже установлены? Какие версии используются? Без системного подхода к проверке зависимостей можно п...
Базовые методы проверки наличия элемента Самый простой и читаемый способ — использование оператора in: fruits = ['яблоко', 'банан', 'апельсин', 'груша']if 'банан' in fruits: print("Банан найден!")else: print("Банана нет в списке")...
Почему может понадобиться полное удаление Python Существует несколько веских причин для удаления Python с компьютера. Рассмотрим наиболее частые сценарии из практики системных администраторов. Конфликты версий: Самая распространенная п...