Как документировать методы с параметрами, используя строки документации Python?
РЕДАКТИРОВАТЬ: PEP 257 дает этот пример:
def complex(real=0.0, imag=0.0):
"""Form a complex number.
Keyword arguments:
real -- the real part (default 0.0)
imag -- the imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Это соглашение используется большинством разработчиков Python?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Я ожидал чего-то более формального, такого как
def complex(real=0.0, imag=0.0):
"""Form a complex number.
@param: real The real part (default 0.0)
@param: imag The imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Окружение : Python 2.7.1
python
documentation
documentation-generation
Дэвид Андреолетти
источник
источник
Ответы:
Основываясь на моем опыте, Numpy конвенция строки документации (PEP257 надстройка) являются наиболее широко распространенными следовали конвенции, которые также поддерживаются инструментами, такие , как сфинкс .
Один пример:
источник
SEVERE: Unexpected section title
- знаете ли вы какой-нибудь способ сделать Сфинкса счастливее?Description
. Я проверил пустую документацию, потому что сразу заметил и подумал: «Подождите секунду, почему это три пробела? Странно. Кто будет использовать три пробела?»Поскольку строки документации имеют произвольную форму, это действительно зависит от того, что вы используете для анализа кода для создания документации API.
Я бы порекомендовал ознакомиться с разметкой Sphinx , поскольку она широко используется и становится стандартом де-факто для документирования проектов Python, отчасти из-за отличного сервиса readthedocs.org . Чтобы перефразировать пример из документации Сфинкса в качестве сниппета Python:
Эта разметка поддерживает перекрестные ссылки между документами и многое другое. Обратите внимание, что документация Sphinx использует (например),
:py:attr:
тогда как вы можете просто использовать:attr:
при документировании из исходного кода.Естественно, есть другие инструменты для документирования API. Есть более классический Doxygen, который использует
\param
команды, но они специально не предназначены для документирования кода Python, как Sphinx.Обратите внимание, что здесь есть похожий вопрос с аналогичным ответом ...
источник
list
.Условные обозначения:
Инструменты:
Обновление: начиная с Python 3.5 вы можете использовать подсказки типов, которые представляют собой компактный машиночитаемый синтаксис:
Основным преимуществом этого синтаксиса является то, что он определяется языком и является однозначным, поэтому такие инструменты, как PyCharm, могут легко воспользоваться его преимуществами.
источник
Строки документа Python имеют произвольную форму , вы можете задокументировать их так, как вам нравится.
Примеры:
Теперь есть некоторые соглашения, но Python не применяет ни одного из них. Некоторые проекты имеют свои собственные соглашения. Некоторые инструменты для работы со строками документов также следуют определенным соглашениям.
источник
Если вы планируете использовать Sphinx для документирования своего кода, он может создавать документы в формате HTML для ваших параметров с помощью функции «подписи». http://sphinx-doc.org/domains.html#signatures
источник
Основной поток, как уже указывалось в других ответах, вероятно, идет по пути Sphinx, чтобы вы могли использовать Sphinx для создания этих необычных документов позже.
При этом, я лично иногда использую встроенный стиль комментариев.
Еще один пример здесь, с некоторыми крошечными деталями, документированными в строке:
Преимущества (как @ mark-horvath уже указывалось в другом комментарии):
Теперь некоторые могут подумать, что этот стиль выглядит «некрасиво». Но я бы сказал, «уродливый» - субъективное слово. Более нейтральный способ - сказать, что этот стиль не является мейнстримом, поэтому он может показаться вам менее знакомым и, следовательно, менее удобным. Опять же, «удобно» - это тоже субъективное слово. Но дело в том, что все преимущества, описанные выше, объективны. Вы не можете достичь их, если вы будете следовать стандартным путем.
Надеемся, что когда-нибудь в будущем появится инструмент для генерации документов, который также может использовать такой встроенный стиль. Это будет стимулировать принятие.
PS: Этот ответ вытекает из моего собственного предпочтения использовать встроенные комментарии всякий раз, когда я считаю нужным. Я использую тот же встроенный стиль, чтобы документировать словарь тоже.
источник
Основываясь на ответе на подсказки типа ( https://stackoverflow.com/a/9195565/2418922 ), который обеспечивает более структурированный способ документирования типов параметров, существует также структурированный способ документирования как типа, так и описания параметров:
пример взят из: https://pypi.org/project/autocommand/
источник
Строки документов полезны только в интерактивных средах, например, в оболочке Python. При документировании объектов, которые не будут использоваться в интерактивном режиме (например, внутренние объекты, обратные вызовы фреймворка), вы также можете использовать обычные комментарии. Вот стиль, который я использую для подвешивания комментариев с отступами к элементам, каждый на отдельной строке, чтобы вы знали, что комментарий применяется к:
Вы не можете делать такие вещи с помощью строк документации.
источник