Spec-Zone.ru › NumPy 1.19

Руководство по документации NumPy/SciPy

При использовании Sphinx в сочетании с соглашениями NumPy, следует использовать расширение numpydoc, чтобы ваши строки документации обрабатывались корректно. Например, Sphinx извлечёт раздел Parameters из вашей строки документации и преобразует его в список полей. Использование numpydoc также поможет избежать ошибок reStructuredText, которые создаёт обычный Sphinx при столкновении с соглашениями NumPy для строк документации, такими как заголовки разделов (например, -------------), которые Sphinx не ожидает найти в строках документации.

Некоторые функции, описанные в этом документе, требуют недавней версии numpydoc. Например, раздел **Yields** был добавлен в версии numpydoc 0.6.

Доступно по следующим ссылкам:

  • numpydoc на PyPI
  • numpydoc на GitHub

Обратите внимание, что для документации внутри NumPy необязательно указывать import numpy as np в начале примера. Однако некоторые подмодули, такие как fft, не импортируются по умолчанию, и их необходимо явно включить:

import numpy.fft

после чего вы можете его использовать:

np.fft.fft2(...)

Для удобства ниже приведён стандарт форматирования с примером

Руководство по строкам документации numpydoc

  • Руководство по документации NumPy/SciPy

    • Руководство по строкам документации numpydoc

      • Обзор
      • Соглашения по импорту
      • Стандарт строк документации
      • Разделы
      • Документирование классов

        • Строка документации класса
        • Строки документации методов
      • Документирование экземпляров классов
      • Документирование генераторов
      • Документирование констант
      • Документирование модулей
      • Другие моменты, которые следует учитывать
      • Общие концепции reST
      • Заключение
  • Исходный код примера
  • Отображённый пример

Этот документ описывает синтаксис и лучшие практики для строк документации, используемых с расширением numpydoc для Sphinx.

Примечание

Для сопровождающего примера см. example.py.

Некоторые функции, описанные в этом документе, требуют недавней версии numpydoc. Например, раздел **Yields** был добавлен в версии numpydoc 0.6.

Обзор

Мы в основном следуем стандартным соглашениям стиля Python, описанным здесь:
  • Руководство по стилю для кода C
  • Руководство по стилю для кода Python
  • Соглашения по строкам документации
Дополнительные PEP, относящиеся к документации кода:
  • Фреймворк для обработки строк документации
  • Спецификация дизайна Docutils
Используйте программу проверки кода:
  • pylint
  • pyflakes
  • pep8.py
  • flake8
  • плагин vim-flake8 для автоматической проверки синтаксиса и стиля с помощью flake8

Соглашения по импорту

В исходном коде NumPy и документации используются следующие соглашения по импорту:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

Не сокращайте scipy. В реальном мире нет необходимости в сокращении, поэтому мы избегаем его в документации, чтобы избежать путаницы.

Стандарт строк документации

Строка документации (docstring) — это строка, описывающая модуль, функцию, класс или определение метода. Строка документации — это специальный атрибут объекта (object.__doc__) и, для единообразия, заключена в тройные двойные кавычки, например:

"""This is the form of a docstring.

It can be spread over several lines.

"""

NumPy, SciPy и scikits следуют общему соглашению для строк документации, обеспечивающему единообразие, и позволяющему нашему инструментарию создавать хорошо отформатированные справочные руководства. Этот документ описывает текущий консенсус сообщества по данному стандарту. Если у вас есть предложения по улучшению, опубликуйте их на списке рассылки numpy-discussion.

Наш стандарт строк документации использует синтаксис re-structured text (reST) и рендерится с помощью Sphinx (предпроцессора, понимающего конкретный стиль документации, который мы используем). Хотя доступен богатый набор разметки, мы ограничиваемся очень базовым подмножеством, чтобы предоставить строки документации, которые легко читаются в текстовых терминалах.

Руководящим принципом является то, что читатели текста имеют приоритет над тем, чтобы изменять строки документации, чтобы наши инструменты производили хороший вывод. Вместо того, чтобы жертвовать удобочитаемостью строк документации, мы написали предпроцессоры, чтобы помочь Sphinx в его задаче.

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

Разделы

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

Разделы строки документации функции:

  1. **Краткое описание**

    Однострочное описание, которое не использует имена переменных или имя функции, например:

    def add(a, b):
       """The sum of two numbers.
    
       """
    

    Подпись функции обычно находится путём интроспекции и отображается функцией справки. Для некоторых функций (в особенности написанных на C) подпись недоступна, поэтому её необходимо указать в первой строке строки документации:

    """
    add(a, b)
    
    The sum of two numbers.
    
    """
    
  1. Предупреждение о устаревании

    Раздел (используйте применительно к объекту) для предупреждения пользователей об устаревшем объекте. Содержание раздела должно включать:

    • В какой версии NumPy объект был устаревшим и когда его удалят.
    • Причина устаревания, если эта информация полезна (например, объект заменён, дублирует функциональность, найденную в другом месте и т. д.).
    • Новый рекомендуемый способ получения той же функциональности.

    Этот раздел должен использовать директиву Sphinx deprecated вместо заголовка раздела с подчеркиванием.

    .. deprecated:: 1.6.0
              `ndobj_old` will be removed in NumPy 2.0.0, it is replaced by
              `ndobj_new` because the latter works also with array subclasses.
    
  2. Подробное описание

    Несколько предложений, дающих подробное описание. Этот раздел должен использоваться для уточнения функциональности, а не для обсуждения деталей реализации или теоретических основ, которые следует изучить в разделе Примечания ниже. Вы можете ссылаться на параметры и имя функции, но описания параметров всё ещё должны быть в разделе Параметры.

  3. Параметры

    Описание аргументов функции, ключевых слов и их соответствующих типов.

    Parameters
    ----------
    x : type
        Description of parameter `x`.
    y
        Description of parameter `y` (with type not specified)
    

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

    Для типов параметров будьте максимально точными. Ниже приведены несколько примеров параметров и их типов.

    Parameters
    ----------
    filename : str
    copy : bool
    dtype : data-type
    iterable : iterable object
    shape : int or tuple of int
    files : list of str
    

    Если нет необходимости указывать ключевой аргумент, используйте optional.

    x : int, optional
    

    Необязательные ключевые параметры имеют значения по умолчанию, которые отображаются как часть сигнатуры функции. Они также могут быть детализированы в описании:

    Description of parameter `x` (the default is -1, which implies summation
    over all axes).
    

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

    order : {'C', 'F', 'A'}
        Description of `order`.
    

    Когда два или более входных параметра имеют точно такой же тип, форму и описание, их можно объединить:

    x1, x2 : array_like
        Input arrays, description of `x1`, `x2`.
    
  4. Возвращаемые значения

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

    Returns
    -------
    int
        Description of anonymous integer return value.
    

    Если указаны и имя, и тип, раздел Возвращаемые значения принимает ту же форму, что и раздел Параметры:

    Returns
    -------
    err_code : int
        Non-zero value indicates error code, or zero on success.
    err_msg : str or None
        Human readable error message, or None on success.
    
  5. Выходные значения

    Описание возвращаемых значений и их типов. Это актуально только для генераторов. Похоже на раздел Возвращаемые значения, в том смысле, что имя каждого значения необязательно, но тип каждого значения всегда требуется:

    Yields
    ------
    int
        Description of the anonymous integer return value.
    

    Если указаны и имя, и тип, раздел Выходные значения принимает ту же форму, что и раздел Возвращаемые значения:

    Yields
    ------
    err_code : int
        Non-zero value indicates error code, or zero on success.
    err_msg : str or None
        Human readable error message, or None on success.
    

    Поддержка раздела Выходные значения была добавлена в версию numpydoc 0.6.

  6. Принимает

    Описание параметров, передаваемых методу генератора .send(), отформатированное, как и для Параметров выше. Поскольку, как для Выходных значений и Возвращаемых значений, в метод всегда передаётся один объект, это может описывать либо один параметр, либо позиционные аргументы, передаваемые в качестве кортежа. Если документация содержит Принимает, она также должна содержать Выходные значения.

  7. Другие параметры

    Необязательный раздел, используемый для описания редко используемых параметров. Он должен использоваться только в том случае, если у функции большое количество ключевых параметров, чтобы избежать захламления раздела Параметры.

  8. Исключения

    Необязательный раздел, описывающий, какие ошибки возникают и при каких условиях:

    Raises
    ------
    LinAlgException
        If the matrix is not numerically invertible.
    

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

  9. Предупреждения

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

  1. Предупреждения

    Необязательный раздел с предостережениями для пользователя в формате свободного текста/reST.

  2. См. также

    Необязательный раздел, используемый для ссылки на связанный код. Этот раздел может быть очень полезным, но его следует использовать осмотрительно. Цель состоит в том, чтобы направить пользователей к другим функциям, о которых они могут не знать или могут легко обнаружить (например, просматривая строку документации модуля). Хорошо подходят функции, документация которых дополнительно объясняет параметры, используемые этой функцией.

    В качестве примера, для numpy.mean мы бы имели:

    See Also
    --------
    average : Weighted average
    

    При ссылке на функции в том же подмодуле, префикс не нужен, и дерево поиска вверх до совпадения.

    Функции из других подмодулей префиксуйте соответственно. Например, документируя модуль random, ссылайтесь на функцию в fft так:

    fft.fft2 : 2-D fast discrete Fourier transform
    

    При ссылке на другой модуль:

    scipy.random.norm : Random variates, PDFs, etc.
    

    Функции могут быть перечислены без описаний, и это предпочтительнее, если функциональность ясна из имени функции:

    See Also
    --------
    func_a : Function a with its description.
    func_b, func_c_, func_d
    func_e
    
  3. Примечания

    Необязательный раздел, который предоставляет дополнительную информацию о коде, возможно, включая обсуждение алгоритма. Этот раздел может содержать математические уравнения, написанные в формате LaTeX:

    The FFT is a fast implementation of the discrete Fourier transform:
    
    .. math:: X(e^{j\omega } ) = x(n)e^{ - j\omega n}
    

    Уравнения также могут быть набраны под директивой math:

    The discrete-time Fourier time-convolution property states that
    
    .. math::
    
         x(n) * y(n) \Leftrightarrow X(e^{j\omega } )Y(e^{j\omega } )\\
         another equation here
    

    Математические обозначения также могут использоваться встроены, например:

    The value of :math:`\omega` is larger than 5.
    

    Имена переменных отображаются в шрифте машинописи, полученном с помощью \mathtt{var}.

    We square the input parameter `alpha` to obtain
    :math:`\mathtt{alpha}^2`.
    

    Обратите внимание, что LaTeX не очень легко читается, поэтому используйте уравнения экономно.

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

    .. image:: filename
    

    где имя_файла — путь, относительный к исходному каталогу справочного руководства.

  4. Ссылки

    Ссылки, цитируемые в разделе Примечания, могут быть перечислены здесь, например, если вы процитировали статью ниже, используя текст [1]_, включите её в список следующим образом:

    .. [1] O. McNoleg, "The integration of GIS, remote sensing,
       expert systems and adaptive co-kriging for environmental habitat
       modelling of the Highland Haggis using object-oriented, fuzzy-logic
       and neural-network techniques," Computers & Geosciences, vol. 22,
       pp. 585-588, 1996.
    

    что отображается как 1:

    1

    О. МакНолег, «Интеграция ГИС, дистанционного зондирования, экспертных систем и адаптивного ко-кригинга для моделирования экологических местообитаний высокогорного хаггиса с использованием объектно-ориентированных, нечётко-логичных и нейросетевых методов», «Компьютеры и геонаука», том 22, стр. 585-588, 1996.

    Ссылка на источники временного характера, такие как веб-страницы, не рекомендуется. Ссылки предназначены для дополнения строки документации, но не должны быть необходимы для её понимания. Ссылки нумеруются, начиная с единицы, в порядке их цитирования.

    Предупреждение

    Ссылки разрывают таблицы

    Там, где ссылки, например [1], появляются в таблицах внутри строки документации numpydoc, разметка таблиц будет нарушена обработкой numpydoc. См. проблему numpydoc #130

  1. Примеры

    Необязательный раздел с примерами, используя формат doctest. Этот раздел предназначен для иллюстрации использования, а не для создания тестовой среды — для этого используйте каталог tests/. Хотя необязательный, этот раздел настоятельно рекомендуется.

    Когда предоставляется несколько примеров, они должны быть разделены пустыми строками. Комментарии, объясняющие примеры, должны иметь пустые строки как над, так и под ними:

    >>> np.add(1, 2)
    3
    
    Comment explaining the second example
    
    >>> np.add([1, 2], [3, 4])
    array([4, 6])
    

    Код примера может быть разделён на несколько строк, при этом каждая строка после первой начинается с ‘… ‘:

    >>> np.add([[1, 2], [3, 4]],
    ...        [[5, 6], [7, 8]])
    array([[ 6,  8],
           [10, 12]])
    

    Для тестов с результатом, который является случайным или зависит от платформы, пометьте вывод как таковой:

    >>> import numpy.random
    >>> np.random.rand(2)
    array([ 0.35773152,  0.38568979])  #random
    

    Вы можете запустить примеры как doctests, используя:

    >>> np.test(doctests=True)
    >>> np.linalg.test(doctests=True)  # for a single module
    

    В IPython также можно запустить отдельные примеры, просто скопировав их в режиме doctest:

    In [1]: %doctest_mode
    Exception reporting mode: Plain
    Doctest mode is: ON
    >>> %paste
     import numpy.random
     np.random.rand(2)
    ## -- End pasted text --
    array([ 0.8519522 ,  0.15492887])
    

    Нет необходимости использовать разметку doctest <BLANKLINE> для указания пустых строк в выводе. Обратите внимание, что возможность запуска примеров через numpy.test предназначена для проверки работоспособности примеров, а не для включения примеров в тестовую систему.

    Примеры могут предполагать, что import numpy as np выполняется перед кодом примера в numpy. Дополнительные примеры могут использовать matplotlib для построения графиков, но должны импортировать его явно, например, import matplotlib.pyplot as plt. Все остальные импорты, включая демонстрируемую функцию, должны быть явными.

    Когда matplotlib импортируется в примере, код примера будет заключён в директиву matplotlib’s Sphinx `plot <http://matplotlib.org/sampledoc/extensions.html>`_. Когда matplotlib не импортируется явно, plot:: может быть использован непосредственно, если matplotlib.sphinxext.plot_directive загружен как расширение Sphinx в conf.py.

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

Документация класса

Используйте те же разделы, что и выше (все, кроме Returns применимы). Конструктор (__init__) также должен быть задокументирован здесь, раздел Параметры строки документации описывает параметры конструктора.

Раздел Атрибуты, расположенный ниже раздела Параметры, может использоваться для описания атрибутов класса, не являющихся методами:

Attributes
----------
x : float
    The X coordinate.
y : float
    The Y coordinate.

Атрибуты, являющиеся свойствами и имеющие свои строки документации, могут быть просто перечислены по имени:

Attributes
----------
real
imag
x : float
    The X coordinate
y : float
    The Y coordinate

В общем случае нет необходимости перечислять методы класса. Те, которые не являются частью публичного API, имеют имена, начинающиеся с нижнего подчёркивания. Однако в некоторых случаях у класса может быть очень много методов, из которых только несколько важны (например, подклассы ndarray). Тогда становится полезным иметь дополнительный раздел Методы:

class Photo(ndarray):
    """
    Array with associated photographic information.

    ...

    Attributes
    ----------
    exposure : float
        Exposure in seconds.

    Methods
    -------
    colorspace(c='rgb')
        Represent the photo in the given colorspace.
    gamma(n=1.0)
        Change the photo's gamma exposure.

    """

Если необходимо объяснить закрытый метод (используйте с осторожностью!), на него можно сослаться в разделе Подробное описание или Примечания. Не перечисляйте закрытые методы в разделе методы.

Обратите внимание, что self не перечисляется как первый параметр методов.

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

Документируйте их так же, как и любые другие функции. Не включайте self в список параметров. Если метод имеет эквивалентную функцию (что характерно для многих методов ndarray, например), строка документации функции должна содержать подробное описание, а строка документации метода должна ссылаться на неё. В строке документации метода следует поместить только краткое описание и раздел См. также. Метод должен использовать раздел Возвращает или Возвращает значения, как это уместно.

Документирование экземпляров классов

Экземпляры классов, которые являются частью API NumPy (например, np.r_ np,c_, np.index_exp, и т. д.) могут потребовать некоторой осторожности. Для предоставления этих экземплярам полезной строки документации мы делаем следующее:

  • Один экземпляр: если представлен только один экземпляр класса, документируйте класс. Примеры могут использовать имя экземпляра.
  • Несколько экземпляров: если представлены несколько экземпляров, строки документации для каждого экземпляра пишутся и присваиваются атрибутам экземпляров __doc__ во время выполнения. Класс документируется обычным образом, и представленные экземпляры могут упоминаться в разделах Замечания и См. также.

Документирование генераторов

Генераторы должны документироваться так же, как и функции. Единственное отличие состоит в том, что следует использовать раздел Возвращает значения вместо раздела Возвращает. Поддержка раздела Возвращает значения была добавлена в версию numpydoc 0.6.

Документирование констант

Используйте те же разделы, что и для функций, где это применимо:

1. summary
2. extended summary (optional)
3. see also (optional)
4. references (optional)
5. examples (optional)

Строки документации для констант не будут видны в текстовых терминалах (константы имеют неизменяемый тип, поэтому строки документации не могут быть назначены им, как для экземпляров классов), но появятся в документации, созданной с помощью Sphinx.

Документирование модулей

Каждый модуль должен иметь строку документации с, по крайней мере, одной строкой резюме. Другие разделы являются необязательными и должны использоваться в том же порядке, что и для документирования функций, когда они подходят:

1. summary
2. extended summary
3. routine listings
4. see also
5. notes
6. references
7. examples

Рекомендуются списки процедур, особенно для больших модулей, для которых сложно получить общее представление обо всех функциях, посмотрев исходный файл(ы) или __all__ dict.

Обратите внимание, что информация об авторских правах и авторах, хотя и часто включается в исходные файлы, не должна входить в состав строк документации.

Другие моменты, которые следует иметь в виду

  • Уравнения: как обсуждалось в разделе Замечания выше, форматирование LaTeX следует сводить к минимуму. Часто можно показать уравнения в виде кода Python или псевдокода вместо этого, что намного читабельнее в терминале. Для инлайн-отображения используйте двойные обратные кавычки (например, y = np.sin(x)). Для отображения с пустыми строками сверху и снизу используйте двойное двоеточие и отступайте код, как в:

    end of previous sentence::
    
        y = np.sin(x)
    
  • Примечания и Предупреждения: если в строке документации есть моменты, заслуживающие особого внимания, можно использовать директивы reST для примечания или предупреждения рядом с контекстом предупреждения (внутри раздела). Синтаксис:

    .. warning:: Warning text.
    
    .. note:: Note text.
    

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

  • array_like: для функций, принимающих аргументы, которые могут иметь не только тип ndarray, но и типы, которые можно преобразовать в массив ndarray (т. е. скалярные типы, последовательные типы), эти аргументы можно документировать с типом array_like.
  • Ссылки: если вам нужно включить гиперссылки в строку документации, обратите внимание, что некоторые разделы строки документации не обрабатываются как стандартный reST, и в этих разделах numpydoc может быть сбит с толку целевыми гиперссылками, такими как:

    .. _Example: http://www.example.com
    

    Если сборка Sphinx выдаёт предупреждение вида WARNING: Unknown target name: "example", значит, происходит именно это. Чтобы избежать этой проблемы, используйте форму инлайн-гиперссылки:

    `Example <http://www.example.com>`_
    

Общие понятия reST

Для абзацев отступы имеют значение и указывают на отступы в выводе. Новые абзацы отмечаются пустой строкой.

Используйте *italics*, **bold** и ``monospace`` при необходимости в любых объяснениях (но не для имён переменных, кода доктэстов или многострочного кода). Имена переменных, модулей, функций и классов должны быть написаны в одинарных обратных кавычках (`numpy`).

Более подробный пример разметки reST можно найти в этом примере документа; справочник быстрого доступа полезен при редактировании.

Интервалы строк и отступы имеют значение и должны соблюдаться тщательно.

Заключение

Сам этот документ написан в формате ReStructuredText. Пример представленного здесь формата доступен.

Пример исходного кода

"""This is the docstring for the example.py module.  Modules names should
have short, all-lowercase names.  The module name may have underscores if
this improves readability.

Every module should have a docstring at the very top of the file.  The
module's docstring may extend over multiple lines.  If your docstring does
extend over multiple lines, the closing three quotation marks must be on
a line by itself, preferably preceded by a blank line.

"""
from __future__ import division, absolute_import, print_function

import os  # standard library imports first

# Do NOT import using *, e.g. from numpy import *
#
# Import the module using
#
#   import numpy
#
# instead or import individual functions as needed, e.g
#
#  from numpy import array, zeros
#
# If you prefer the use of abbreviated module names, we suggest the
# convention used by NumPy itself::

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# These abbreviated names are not to be used in docstrings; users must
# be able to paste and execute docstrings after importing only the
# numpy module itself, unabbreviated.


def foo(var1, var2, long_var_name='hi'):
    r"""A one-line summary that does not use variable names or the
    function name.

    Several sentences providing an extended description. Refer to
    variables using back-ticks, e.g. `var`.

    Parameters
    ----------
    var1 : array_like
        Array_like means all those objects -- lists, nested lists, etc. --
        that can be converted to an array.  We can also refer to
        variables like `var1`.
    var2 : int
        The type above can either refer to an actual Python type
        (e.g. ``int``), or describe the type of the variable in more
        detail, e.g. ``(N,) ndarray`` or ``array_like``.
    long_var_name : {'hi', 'ho'}, optional
        Choices in brackets, default first when optional.

    Returns
    -------
    type
        Explanation of anonymous return value of type ``type``.
    describe : type
        Explanation of return value named `describe`.
    out : type
        Explanation of `out`.
    type_without_description

    Other Parameters
    ----------------
    only_seldom_used_keywords : type
        Explanation
    common_parameters_listed_above : type
        Explanation

    Raises
    ------
    BadException
        Because you shouldn't have done that.

    See Also
    --------
    otherfunc : relationship (optional)
    newfunc : Relationship (optional), which could be fairly long, in which
              case the line wraps here.
    thirdfunc, fourthfunc, fifthfunc

    Notes
    -----
    Notes about the implementation algorithm (if needed).

    This can have multiple paragraphs.

    You may include some math:

    .. math:: X(e^{j\omega } ) = x(n)e^{ - j\omega n}

    And even use a Greek symbol like :math:`\omega` inline.

    References
    ----------
    Cite the relevant literature, e.g. [1]_.  You may also cite these
    references in the notes section above.

    .. [1] O. McNoleg, "The integration of GIS, remote sensing,
       expert systems and adaptive co-kriging for environmental habitat
       modelling of the Highland Haggis using object-oriented, fuzzy-logic
       and neural-network techniques," Computers & Geosciences, vol. 22,
       pp. 585-588, 1996.

    Examples
    --------
    These are written in doctest format, and should illustrate how to
    use the function.

    >>> a = [1, 2, 3]
    >>> print [x + 3 for x in a]
    [4, 5, 6]
    >>> print "a\n\nb"
    a
    b

    """

    pass

Пример отображения

Это строка документации для модуля example.py. Имена модулей должны иметь короткие имена с использованием строчных букв. В имени модуля могут быть подчёркивания, если это улучшает читаемость.

Каждый модуль должен иметь строку документации в самом верху файла. Строка документации модуля может занимать несколько строк. Если ваша строка документации занимает несколько строк, закрывающие три кавычки должны быть на отдельной строке, желательно перед ней должна быть пустая строка.

doc.example.foo(var1, var2, long_var_name='hi') [source]

Однострочное резюме, которое не использует имена переменных или имя функции.

Несколько предложений, предоставляющих расширенное описание. Ссылайтесь на переменные, используя обратные кавычки, например, var.

Параметры
var1array_like

«Array_like» означает все те объекты — списки, вложенные списки и т. д. — которые можно преобразовать в массив. Мы также можем ссылаться на переменные, такие как var1.

var2int

Указанный выше тип может ссылаться на фактический тип Python (например, int) или описывать тип переменной более подробно, например, (N,) ndarray или array_like.

long_var_name{‘hi’, ‘ho’}, optional

Выбор в скобках, первый по умолчанию, если необязательно.

Возвращает
тип

Описание анонимного возвращаемого значения типа type.

describetype

Описание возвращаемого значения с именем describe.

outtype

Описание out.

тип_без_описания
Другие параметры
only_seldom_used_keywordstype

Описание

common_parameters_listed_abovetype

Описание

Возбуждает
BadException

Потому что вы этого не должны были делать.

См. также

otherfunc

отношение (необязательно)

newfunc

Отношение (необязательно), которое может быть довольно длинным, в этом случае строка переносится сюда.

thirdfunc, fourthfunc, fifthfunc

Замечания

Примечания об алгоритме реализации (при необходимости).

Это может иметь несколько абзацев.

Вы можете включить некоторую математику:

X(e^{j\omega } ) = x(n)e^{ - j\omega n}

И даже использовать греческий символ, как \omega встроеный.

Ссылки

Укажите соответствующую литературу, например, [1]. Вы также можете использовать эти ссылки в разделе «Примечания» выше.

1

О. МакНолег, «Интеграция ГИС, дистанционного зондирования, экспертных систем и адаптивного кокригирования для моделирования экологической среды Высокогорной Утки с использованием объектно-ориентированных, нечетких логических и нейросетевых методов», Computers & Geosciences, том 22, стр. 585-588, 1996.

Примеры

Они написаны в формате doctest и должны иллюстрировать, как использовать функцию.

>>> a = [1, 2, 3]
>>> print [x + 3 for x in a]
[4, 5, 6]
>>> print "a\n\nb"
a
b

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/docs/howto_document.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API