Docstring документация

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

Тренажер по Python

Этот тренажер посвящён документированию функций в Python с помощью docstring. Хорошая документация — это не просто формальность, а реальный инструмент, который помогает другим разработчикам (и тебе через полгода) понять, что делает код. В заданиях ты научишься писать docstring в разных форматах, разберёшься с тем, как Python хранит документацию, и потренируешься читать чужие docstring. Мы рассмотрим однострочные и многострочные варианты, форматы Google Style и reStructuredText, а также поработаем с атрибутом __doc__. Задания идут от простого к сложному — начнём с базового синтаксиса и закончим полноценным документированием функций с параметрами и возвращаемыми значениями.

Список тем

Базовый синтаксис docstring

id: 40046_task1

Docstring размещается сразу после объявления функции и заключается в специальные кавычки. Дополните код, чтобы функция имела корректную строку документации.

Заполните пропуски
def greet(name):
    input1SВозвращает приветствие для указанного имени.input2S
    return f"Привет, {name}!"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Доступ к документации функции

id: 40046_task2

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

Выберите правильный вариант ответа
def add(a, b):
    """Складывает два числа."""
    return a + b

print(add.__doc__)
Сообщения
Проверить
Показать подсказку

Исправьте расположение docstring

id: 40046_task3

Docstring должен располагаться в определённом месте, иначе Python не распознает его как документацию. Найдите и исправьте ошибку в коде.

Найдите ошибку и исправьте
def multiply(x, y):
    result = x * y
    """Умножает x на y и возвращает результат."""
    return result
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Форматы документирования

id: 40046_task4

Существует несколько популярных стилей написания docstring. Сопоставьте название формата с его характерной особенностью.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Секции Args:, Returns: с отступами для параметров
Директивы :param name:, :return: с двоеточием
Секции Parameters и Returns с линиями из дефисов
NumPy Style
Google Style
reStructuredText (Sphinx)
Сообщения
Проверить
Показать подсказку

Функция без docstring

id: 40046_task5

Что вернёт обращение к атрибуту __doc__ у функции, которая не имеет docstring? Введите результат.

Что должно получиться?
def empty_function():
    pass

print(empty_function.__doc__)
Сообщения
Проверить
Показать подсказку

Однострочные и многострочные docstring

id: 40046_task6

Распределите примеры docstring по категориям: какие являются однострочными (помещаются в одну строку), а какие — многострочными.

Перетяните элементы в соответствующие блоки
Однострочные
Многострочные
"""Возвращает сумму двух чисел."""
"""Вычисляет факториал числа.\n\nArgs:\n n: Целое число.\n\nReturns:\n Факториал числа n."""
"""Проверяет, является ли строка палиндромом."""
"""Сортирует список по возрастанию.\n\nArgs:\n items: Список элементов.\n reverse: Сортировка по убыванию.\n\nReturns:\n Отсортированный список."""
"""Конвертирует температуру из Цельсия в Фаренгейт."""
Сообщения
Проверить
Показать подсказку

Docstring в формате Google Style

id: 40046_task7

Заполните пропуски в docstring, используя токены из банка. Функция принимает имя и возраст, возвращает отформатированную строку.

Нужно правильно расставить в пропуски предложенные варианты
def create_profile(name, age):
    """Создаёт строку профиля пользователя.

    input1S
        name: Имя пользователя.
        input2S Возраст пользователя.

    input3S
        Строка вида 'Имя: X, Возраст: Y'.
    """
    return f"Имя: {name}, Возраст: {age}"
Args:
Returns:
age:
Raises:
name:
Parameters:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Docstring в формате reStructuredText

id: 40046_task8

Формат reStructuredText (Sphinx) использует специальные директивы для документирования. Заполните пропуски, чтобы получить корректный docstring.

Заполните пропуски
def divide(a, b):
    """Делит одно число на другое.

    input1S a: Делимое.
    input2S b: Делитель.
    input3S Результат деления.
    :raises ZeroDivisionError: Если b равен нулю.
    """
    return a / b
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Структура многострочного docstring

id: 40046_task9

Расставьте строки docstring в правильном порядке согласно соглашениям PEP 257 и Google Style.

Расставьте строки в правильном порядке
"""
Args:
numbers: Список чисел.
Returns:
Среднее значение списка.
"""
Вычисляет среднее арифметическое списка чисел.
Сообщения
Проверить
Показать подсказку

Функция help() и docstring

id: 40046_task10

Встроенная функция help() выводит справку о функции. Что будет показано для функции с docstring?

Выберите правильный вариант ответа
def square(n):
    """Возвращает квадрат числа."""
    return n ** 2

help(square)
Сообщения
Проверить
Показать подсказку

Исправьте docstring с ошибкой

id: 40046_task11

В этом коде docstring написан с нарушением синтаксиса Python. Найдите и исправьте ошибку.

Найдите ошибку и исправьте
def validate_email(email):
    "Проверяет корректность email-адреса.
 
    Args:
        email: Строка с email.
 
    Returns:
        True если email корректен, иначе False."
    return '@' in email
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите функцию с полным docstring

id: 40046_task12

Соберите функцию calculate_area, которая вычисляет площадь прямоугольника. Функция должна иметь docstring в формате Google Style с секциями Args и Returns. Одна строка лишняя.

Перетяните в правильном порядке строки из одного блока в другой
def calculate_area(width, height):
    """Вычисляет площадь прямоугольника.
    Args:
        width: Ширина прямоугольника.
        height: Высота прямоугольника.
    Returns:
        Площадь прямоугольника.
    """
    return width * height
    Parameters:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Документирование исключений

id: 40046_task13

Помимо параметров и возвращаемого значения, docstring может описывать исключения, которые функция может выбросить. Заполните пропуски.

Заполните пропуски
def get_element(items, index):
    """Возвращает элемент списка по индексу.

    Args:
        items: Список элементов.
        index: Индекс элемента.

    Returns:
        Элемент списка.

    input1S
        input2S Если индекс выходит за границы списка.
        TypeError: Если items не является списком.
    """
    if not isinstance(items, list):
        raise TypeError("items должен быть списком")
    return items[index]
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Доступ к docstring через __doc__

id: 40046_task14

Изучите код и определите, что будет выведено. Обратите внимание на форматирование вывода.

Что должно получиться?
def test():
    """Первая строка.
    Вторая строка."""
    pass

print(test.__doc__.split('\n')[0])
Сообщения
Проверить
Показать подсказку

Полный docstring с типами

id: 40046_task15

Дополните docstring функции, добавив информацию о типах параметров и возвращаемого значения в формате Google Style.

Нужно правильно расставить в пропуски предложенные варианты
def repeat_string(text, times):
    """Повторяет строку указанное количество раз.

    Args:
        text input1S: Исходная строка.
        times input2S: Количество повторений.

    Returns:
        input3S: Строка, повторённая times раз.
    """
    return text * times
(str)
(int)
str
int
(list)
list
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру