К счастью, с помощью больших языковых моделей (БЯМ) и таких инструментов, как ChatGPT, можно быстро документировать свой код и проекты на Python.
В Python можно документировать код с помощью строк документации (они же docstrings), а затем использовать их для улучшения внешней документации проекта. ChatGPT может оказать большую помощь в написании как docstrings, так и внешней документации.
В этом уроке вы:
- Научитесь создавать различные подсказки ChatGPT для генерации docstrings на Python.
- Используете различные стили при генерации документаций с помощью ChatGPT.
- Добавите тесты doctest и примеры использования в документацию Python.
- Научитесь создавать внешнюю документацию, такую как файлы README и учебники, с помощью ChatGPT.
Чтобы получить максимальную пользу от этого урока, вы должны иметь учетную запись в ChatGPT и знать основы взаимодействия с этим инструментом с использованием техники подсказок. Вы также должны знать основы документирования кода на языке Python.
Преимущества использования ChatGPT для документирования кода на языке Python
Наличие качественной и актуальной документации имеет решающее значение для любого программного проекта. Плохо составленная документация может привести к провалу проекта или остаться незамеченной, даже если кодовая база написана хорошо, а основная идея проекта – инновационная и полезная.
Составление хорошей документации требует значительных затрат времени и сил. Именно поэтому использование больших языковых моделей (БЯМ), таких как ChatGPT, может стать хорошей альтернативой для обеспечения ваших проектов и кода надлежащей документацией.
Среди преимуществ ChatGPT для документирования кода на языке Python можно выделить следующие:
- Повышение производительности: он позволяет автоматизировать задачи, связанные с документированием кода и его поддержкой, что значительно экономит время и силы.
- Повышение качества: он обеспечивает точность, актуальность и полноту документации.
- Повышенное удобство работы с документацией: Он позволяет составлять интересную и удобную документацию, что повышает удобство работы с проектом.
- Снижение затрат: Позволяет снизить затраты на создание и поддержку документации.
- Четкое соблюдение требований: Это позволяет обеспечить соответствие документации стандартам и нормам, что делает ее более последовательной и профессиональной.
В следующих разделах вы узнаете об основах использования ChatGPT в качестве помощника для создания согласованных docstrings и удобной внешней документации для ваших Python-проектов.
Эффективные подсказки ChatGPT для написания docstrings
Основным способом документирования кода Python являются строки документирования. В Python doc-строка – это обычно строка с тройными кавычками, занимающая первый ряд модулей, функций, классов и методов. Эта строка имеет особое значение для Python, который хранит ее в атрибуте .__doc__
.
Многие инструменты Python, в том числе редакторы кода и среды разработки, пользуются преимуществами docstrings для предоставления помощи в реальном времени при написании кода. Строки документации также являются частью встроенной справочной системы Python, доступ к которой можно получить с помощью функции help()
:
В этом примере вы вызываете функцию help()
с классом str
в качестве аргумента и получаете страницу документации класса, которая содержит его строку документации:
В этом случае вы получаете классовую строку документации, обращаясь к атрибуту .__doc__
непосредственно на классе str
. Как вы можете убедиться, строки документирования добавляют много полезного в ваш код. Они являются основной документацией, которую вы и другие разработчики Python будете использовать для изучения любого объекта Python.
Вы также можете воспользоваться docstrings своего кода при создании проектной документации с помощью таких инструментов, как Sphinx или MkDocs. В этих инструментах предусмотрены плагины и функции, позволяющие извлекать строки документации и делать их частью внешней документации проекта, что значительно экономит время.
В Python существуют общепринятые соглашения для оформления хорошей документации. Документация пакетов, модулей, классов, методов и функций преследует определенные цели и должна соответствовать определенным правилам. Эти рекомендации и соглашения можно найти в PEP 257.
Несмотря на то что PEP 257 представляет собой единый стандарт, в экосистеме Python можно встретить большое разнообразие стилей строк документирования. Вот несколько распространенных вариантов:
- Строки документации в стиле Google: Этот стиль был разработан компанией Google, и вы можете найти множество примеров в ее проектах с открытым исходным кодом.
- Стандарт строк документации NumPy: Этот стиль был разработан для библиотеки NumPy, и многие другие Python-проекты используют его.
- reStructuredText (RST) или формат docstring Sphinx: Этот стиль основан на reStructuredText и разработан компанией Sphinx, которая обеспечивает автоматизацию процесса создания документации.
- Стиль Epytext: Это легкий язык форматирования строк документации, изначально созданный проектом Epydoc.
Каждый стиль имеет собственные соглашения. Как правило, следует выбрать один стиль и использовать его на протяжении всего проекта Python.
На практике выбор стиля строк документации – это, в основном, вопрос личных предпочтений. Тем не менее следует также учитывать специфические потребности вашего проекта, которые включают следующие характеристики:
- Сложность проекта: Если у вас большой и сложный проект, то вам может подойти стиль Sphinx или NumPy, что позволит составить подробную документацию. В то время как для небольших проектов может потребоваться только базовая документация, и в этом случае подойдет что-то вроде PEP 257 или docstrings в стиле Google.
- Ваши средства документирования: Если для создания документации по проекту вы используете что-то вроде Sphinx или MkDocs, то вам следует использовать тот стиль, который лучше всего поддерживается в выбранном вами инструменте.
Ознакомившись с краткой историей создания строк документации в Python, вы можете приступать к написанию docstrings для ChatGPT.
Использование исходного кода в подсказках
Самый быстрый способ создания подсказок для написания строк документации – это вложение исходного кода в саму подсказку. Рассмотрим следующий пример, в котором создается подсказка для генерации docstring функции, которая складывает два числа:
Вы: Напиши однострочный docstring для следующей функции:
ChatGPT:
В этом запросе вы обращаетесь к ChatGPT с просьбой написать однострочный docstring для вашей функции. Результат получается достаточно простым и читабельным. Этот тип документа не содержит подробной информации об аргументах и возвращаемом значении функции.
Вы можете сделать подсказку более подробной и задать определенный стиль docstring. Следующие подсказки заставляют ChatGPT сгенерировать документацию для функции add()
, используя стили Google, NumPy и Sphinx соответственно:
Вы: Напиши строку документации в стиле Google для следующей функции:
ChatGPT:
Вы: Напиши документацию в стиле NumPy для следующей функции:
ChatGPT:
Вы: Напиши строку документации в стиле Sphinx для следующей функции:
ChatGPT:
Эти три документа выглядят намного завершеннее и отточеннее, чем однострочная docstring, которую вы видели ранее. Если добавить информацию об используемом стиле, то ChatGPT сможет сгенерировать полноценную документацию для вашей функции. Конечно, первоначальный результат может быть не идеальным, но это отличная отправная точка.
Самое главное – это то, что вы получили полноценную документацию, используя в качестве подсказки одно короткое предложение. Это невероятно повышает производительность вашего проекта.
ChatGPT позволяет не только генерировать документацию для функций. Он также может работать с модулями, классами и т. д. Приведем небольшой пример построения строки документации для класса Circle
и его методов:
Вы: Напиши документацию в стиле NumPy для следующего класса и его методов:
ChatGPT:
Ух ты! Это было здорово! С помощью одного предложения вы заставили ChatGPT сгенерировать документацию в стиле NumPy для вашего класса и всех его методов. Это отличное дополнение к вашей кодовой базе.
Включение сигнатур (исключительно) в подсказки
Иногда в подсказках нельзя использовать исходный код. Это может быть связано с требованиями конфиденциальности или просто с желанием сохранить код своей компании в безопасности. В этом случае можно создать подсказки, в которых будут использоваться только сигнатуры классов, методов и функций.
Чтобы понять, как создавать подобные подсказки, рассмотрим сигнатуру функции, которая проверяет, попадает ли число в заданный интервал:
Вы: Напиши в стиле Google строку документации для функции со следующей сигнатурой:
ChatGPT:
В этом примере, сигнатура функции – это единственный контекст, который вы предоставляете ChatGPT. БЯМ достаточно умна, чтобы изучить название функции и ее аргументы и сгенерировать для вас подходящую строку документации. Обратите внимание, что наличие описательных наименований функций и аргументов является ключевым моментом в такого рода подсказках. В противном случае вывод может оказаться недостаточно информативным.
В большинстве случаев добавление подсказок о типе в сигнатуру функции улучшает качество получаемой строки документации.
Подсказки, в которых не используется код
Вы также можете разработать подсказку, просто указав входные и выходные данные своего кода или предоставив подробное описание того, что делает ваш код. Опять же, эти типы подсказок полезны, когда не разрешается загружать свой код в виде подсказки.
В качестве примера приведем подсказку, в которой вы просите ChatGPT написать строку документации для функции, которая определяет, является ли целое число простым:
Вы: Напиши в стиле Google строку документации для функции, которая принимает в качестве аргумента целое число и определяет, является ли оно простым.
ChatGPT:
Представленная документация достаточно полна и полезна. Она даже включает в себя объяснение того, что такое простое число и это просто замечательно! Вы можете доработать ее, добавив несколько деталей. Однако у вас уже есть отличная отправная точка.
Запрашивание тестов и примеров использования в подсказках
Примеры использования – это, пожалуй, самая важная часть хорошей документации по программному обеспечению. Благодаря примерам кода пользователи могут быстро понять, как пользоваться вашим кодом и как он работает. Зачастую другие разработчики просматривают вашу документацию, пока не найдут пример кода.
Поэтому добавление примеров использования в документацию является большим плюсом. В ChatGPT для приведения примеров использования достаточно включить в подсказки небольшое предложение. Рассмотрим следующую подсказку и ее результат:
Вы: Напиши документацию в стиле NumPy для следующей функции. Добавь раздел с примерами использования в качестве тестов doctest
:
ChatGPT:
Строки c 20-й по 27-ю демонстрируют примеры использования вашей функции. В подсказке вы указали ChatGPT использовать для примеров формат doctest
.Это позволит получить два важных преимущества:
- Примеры использования.
- Базовые тесты для вашего кода.
Замечательно! Вы получили сразу два преимущества! В вашей документации есть классные примеры использования, и в то же время в ней есть тесты, которые помогут вам сделать ваш код более надежным. Запустить эти тесты можно с помощью команды doctest
.
Внешняя документация для кода Python
До этого момента вы использовали ChatGPT для написания документаций к коду Python. Несмотря на то, что строки документации играют важную роль в документировании проекта, их может быть недостаточно. Возможно, в вашем коде есть некоторые моменты, требующие более глубокого объяснения и подробных примеров.
Поэтому, если вы хотите получить отличную документацию, которая повысит эффективность работы пользователей с вашим проектом, вам необходимо создать другую внешнюю документацию, например, файлы README, учебники и руководства по эксплуатации.
Создание такого рода документации потребует больше усилий и времени, чем создание строк документации для кода. К счастью, ChatGPT может помочь вам и здесь. В следующих разделах мы рассмотрим основы использования ChatGPT для создания внешней документации для ваших Python-проектов. Начнем с файлов README.
Создание файлов README
Файл README – это, пожалуй, самая главная часть внешней документации, которую вы когда-либо создавали для любого проекта на Python. Вы, вероятно, найдете множество различных рекомендаций о том, что следует включать в файлы README. В целом, содержание этого файла зависит от конкретного проекта и его основных целей.
При создании файла README для конкретного проекта можно воспользоваться ChatGPT. Если у вас нет четкого представления о том, что нужно включить в этот тип файла, то вы можете спросить об этом у ChatGPT:
Вы: Каковы рекомендуемые правила написания файла README?
ChatGPT: Написание хорошего файла README играет важную роль в том, чтобы помочь пользователям понять цель вашего проекта, как его использовать и как можно внести в него свой вклад. Вот некоторые общие разделы, которые часто включаются в хорошо составленный файл README:
- Название проекта: Краткое, запоминающееся название в качестве заголовка в самом начале README.
- Описание проекта: Пара абзацев, описывающих проект, его работу и назначение.
- Установка и начало работы: Подробные инструкции по установке проекта и всех зависимостей, его настройке и запуску. Для программных проектов включите необходимые командные строки.
- Примеры использования: Примеры использования проекта. В этом разделе могут быть очень полезны фрагменты кода и скриншоты.
- Рекомендации по внесению вклада: Если ваш проект с открытым исходным кодом и вы принимаете участие в его реализации, укажите, как вносить вклад в проект и отправлять запросы на внесение изменений. Можно указать предпочтения по стилю кода, автоматические тесты, которые они должны проходить, и т. д.
- Лицензии: Укажите тип лицензии проекта.
- Контактная информация: Укажите свою контактную информацию или рекомендации по получению поддержки.
- Ссылки и благодарности: При необходимости укажите, какие работы или ресурсы вы использовали.
Сделайте свой README ясным, кратким и информативным. Помните, что это, как правило, первое, что увидят люди, посетив ваш проект, и это может сильно повлиять на их решение использовать его или внести свой вклад.
Конечно, этот список не является полным и окончательным. В зависимости от специфики проекта вам могут понадобиться и другие разделы. Тем не менее, полученный результат является отличной отправной точкой для создания хорошего README-файла.
Теперь можно выбрать оптимальную структуру файла, а затем создать специальные подсказки для ChatGPT, которые помогут написать каждый раздел. Начните с заголовка:
Вы: Напиши пять привлекательных заголовков для файла README проекта на языке Python, в котором представлены основные математические операции.
ChatGPT:
- "Добро пожаловать в PyBasicMath: Ваше универсальное решение для базовых математических операций на Python"
- "PyBasicMath: Упрощение сложных вычислений с помощью базовых математических функций"
- "Math Made Easy with PyBasicMath: Полный пакет для базовых вычислений на языке Python"
- "Раскройте возможности математики с помощью PyBasicMath: Быстрые и эффективные математические операции на языке Python"
- "PyBasicMath: Делаем математику доступной для разработчиков Python всех уровней".
Это отличный список заголовков. Возможно, некоторые из них вам уже понравились, но вы также можете использовать идеи из нескольких предложенных вариантов и самостоятельно разработать отличный заголовок. Попробуйте написать подсказки для других разделов. Вы будете удивлены, насколько полезным может быть ChatGPT.
В качестве упражнения вы можете написать конкретные подсказки для других разделов, из предложенных выше идей ChatGPT.
Обращение к ChatGPT за помощью в создании файла README по частям, а не за генерацией всего файла README, может быть более удобным и эффективным, поскольку можно настроить подсказку на конкретный раздел.
Генерация комментариев к коду
ChatGPT может сгенерировать подробные объяснения работы того или иного фрагмента кода. Эта функция открывает широкие возможности для создания внешней документации. Пример запроса, который просит БЯМ объяснить, как работает функция:
Вы: Объясни, как работает следующая функция:
ChatGPT:
Функция find_extremes(iterable)
находит наименьшее и наибольшее значения в итерируемом объекте, таком как список, кортеж или любой другой элемент Python. Приведем пошаговое описание:
data = tuple(iterable)
: Эта строка кода преобразует входной итерируемый объект в кортеж. Независимо от того, является ли входной объект списком, множеством или другим типом итерируемого объекта, преобразование его в кортеж обеспечивает последовательную итерацию данных на следующих шагах.if len(data) == 0: raise ValueError
("входной итерируемый список не должен быть пустым"): Если длина кортежа данных равна нулю (т. е. если входная итерируемая таблица пуста), то возникает исключениеValueError
с сообщением "входная итерируемая таблица не должна быть пустой". Это является защитной конструкцией, не позволяющей функции продолжить работу с пустым итератором, что приведет к тому, что функцииmin
иmax
также выдадут ошибкуValueError
.return min(data), max(data)
: В этой строке используются встроенные в Python функцииmin
иmax
для поиска наименьшего и наибольшего значений в итерабельной таблице соответственно. Эти значения возвращаются в виде кортежа.
Если функция может сравнивать элементы внутри данных, то она определяет наименьшее и наибольшее значения. В противном случае (например, iterable
является сложным объектом, не поддерживающим операцию сравнения) функции min
и max
выдадут ошибку TypeError
.
В целом, эта функция принимает любой итерируемый объект и возвращает кортеж, представляющий наименьшее и наибольшее значения, содержащиеся в этом итерируемом объекте.
Результат работы ChatGPT достаточно подробен и построчно объясняет работу функции. Этот фрагмент объяснения станет отличным дополнением к внешней документации вашего проекта. Вы можете использовать это сообщение в учебнике, руководстве по эксплуатации или даже в файле README, если это уместно для данного проекта.
Создание примеров использования
Вы уже знаете, что ChatGPT может генерировать примеры использования как часть вашей документации. Он также может создавать примеры использования, которые затем можно использовать в учебнике, руководстве по эксплуатации или файле README:
Вы: Напиши три примера использования для следующей функции. Добавь пояснения к каждому примеру:
ChatGPT:
Функция is_divisible(a, b)
проверяет, целиком ли одно число (a) делится на другое (b). При этом используется оператор модуляции (%
), который возвращает остаток от деления a на b. Если остаток равен 0, то это означает, что a целиком делится на b.
В этом примере функция проверяет, делится ли 10 на 5. Поскольку 10, деленное на 5, дает коэффициент 2 без остатка, функция возвращает True
.
В данном случае функция проверяет, делится ли 17 на 3. Так как при делении 17 на 3 получается коэффициент 5 и остаток 2, функция возвращает значение False
.
Здесь функция проверяет, делится ли 36 на 9. Поскольку при делении 36 на 9 получается коэффициент 4 без остатка, функция возвращает True
. Это означает, что 36 полностью делится на 9.
Обратите внимание, что в подсказке указано конкретное количество примеров. Кроме того, в нем содержится запрос на отдельные пояснения. Можно добавить более подробные инструкции и по другим параметрам кода. Например, можно попросить указать конкретные предельные случаи, скажем, когда второй аргумент равен 0.
Подробные инструкции повысят качество полученных результатов и помогут сосредоточиться на объяснении конкретных и наиболее важных особенностях работы кода, которые могут быть полезны пользователям.
Написание учебников и руководств
Теперь, когда вы использовали ChatGPT для создания пояснений к коду и примеров использования, вы можете собрать их и создать учебник или руководство по работе с кодом.
К примеру, вы хотите создать учебник по использованию библиотеки Python, выполняющей основные математические вычисления. Если вы использовали один канал ChatGPT для генерации примеров кода и пояснений к библиотеке, то в чате достаточно материала для создания заголовка, конспекта, введения и даже хорошего заключения.
Вот короткая подсказка, которая просит ChatGPT сгенерировать набросок для учебника:
Вы: Напиши конспект для учебника по библиотеке Python, выполняющей основные математические вычисления.
ChatGPT:
Набросок для учебника по библиотеке Python, выполняющей основные математические вычисления
Введение
- Краткое введение к учебному пособию.
- Понимание важности математики в программировании.
- Знакомство с базовой математической библиотекой Python:
- Что такое базовая математическая библиотека Python?
- Какие функции в нее входят?
Начало работы
- Установка библиотеки Python Basic Math.
- Импорт библиотеки в проект Python.
Подробное знакомство с основными математическими функциями
- Сложение:
- Синтаксис и информация о параметрах.
- Практический пример.
- Вычитание:
- Синтаксис и информация о параметрах.
- Практический пример.
- Умножение:
- Синтаксис и информация о параметрах.
- Практический пример.
- Деление:
- Синтаксис и информация о параметрах.
- Практический пример.
- Модуль:
- Синтаксис и информация о параметрах.
- Практический пример.
- Степень:
- Синтаксис и информация о параметрах.
- Практический пример.
- Квадратный корень:
- Синтаксис и информация о параметрах.
- Практический пример.
- Округление чисел:
- Синтаксис и информация о параметрах.
- Практический пример.
Дополнительные темы
- Комплексное использование нескольких функций.
- Примеры реальных практических задач с использованием библиотеки Basic Math.
- Отслеживание ошибок и устранение неполадок.
Заключение и дальнейшие шаги
- Обзор основных рассмотренных тем.
- Куда двигаться дальше: Другие математические библиотеки в Python.
- Заключительные слова и рекомендации.
На протяжении всего курса лекций мы будем проводить практические занятия, задания и упражнения, примеры использования и викторины, чтобы сделать процесс обучения интересным и увлекательным. К концу этого курса вы научитесь использовать базовую математическую библиотеку Python для выполнения различных математических операций.
Теперь вы можете составлять конкретные подсказки для ChatGPT с целью создания контента для каждого раздела. Кроме того, в соответствующие разделы можно включить примеры использования и пояснения к коду. Попробуйте!
Как видите, ChatGPT является отличным помощником при документировании Python-проектов. Однако перед публикацией результатов работы обязательно проверьте их на точность и качество.
Заключение
Теперь вы знаете, как с помощью таких инструментов, как ChatGPT, документировать свой код с использованием соответствующих строк документации. Вы также узнали, как быстро создавать внешнюю документацию для Python-проекта с помощью ChatGPT.
В этом руководстве вы узнали, как:
- Писать различные подсказки ChatGPT для генерации эффективных строк документации Python
- Использовать различные стили при создании документации с помощью ChatGPT
- Запрашивать ChatGPT о добавлении в документацию тестов doctest и примеров использования
- Создание внешней документации для проекта на Python с помощью ChatGPT
Получив эти навыки, вы можете приступать к созданию полезной и удобной документации для вашего Python-кода и проектов.
Комментарии