Строки документации Python (или строки документации) предоставляют удобный способ связывания документации с модулями, функциями, классами и методами Python.

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

Как должна выглядеть строка документации?

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

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

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

def my_function():
«»»

Демонстрирует строки документации и ничего не делает на самом деле.

”””

return None

print («Используя __doc__:»)
print (my_function.__doc__)

print (« Использование справки:")
help(my_function)

Вывод:

Using __doc__:
Demonstrate docstrings and does nothing really.
Using help:
Help on function my_function in module __main__:
my_function()
    Demonstrate docstrings and does nothing really.

Однострочные строки документации

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

def power(a, b):

"""Returns arg1 raised to power arg2."""

return a**b

print power.__doc__

Вывод:

Returns arg1 raised to power arg2.

Многострочные строки документации

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

def my_function(arg1):

"""

Summary line.

Extended description of function.

Parameters:

arg1 (int): Description of arg1

Returns:

int: Description of return value

"""

return arg1

print my_function.__doc__

Вывод:

Summary line.
    Extended description of function.
    Parameters:
    arg1 (int): Description of arg1
    Returns:
    int: Description of return value

Отступы в строках документации

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

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

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

class ComplexNumber:

"""

This is a class for mathematical operations on complex numbers.

Attributes:

real (int): The real part of complex number.

imag (int): The imaginary part of complex number.

"""

def __init__(self, real, imag):

"""

The constructor for ComplexNumber class.

Parameters:

real (int): The real part of complex number.

imag (int): The imaginary part of complex number.

"""

def add(self, num):

"""

The function to add two Complex Numbers.

Parameters:

num (ComplexNumber): The complex number to be added.

Returns:

ComplexNumber: A complex number which contains the sum.

"""

re = self.real + num.real

im = self.imag + num.imag

return ComplexNumber(re, im)

help(ComplexNumber) # to access Class docstring

help(ComplexNumber.add) # to access method's docstring

Вывод:

Help on class ComplexNumber in module __main__:
class ComplexNumber
 |  This is a class for mathematical operations on complex numbers.
 |  
 |  Attributes:
 |          real (int): The real part of complex number.
 |          imag (int): The imaginary part of complex number.
 |  
 |  Methods defined here:
 |  
 |  __init__(self, real, imag)
 |      The constructor for ComplexNumber class.
 |      
 |      Parameters:
 |      real (int): The real part of complex number.
 |      imag (int): The imaginary part of complex number.
 |  
 |  add(self, num)
 |      The function to add two Complex Numbers.
 |      
 |      Parameters:
 |              num (ComplexNumber): The complex number to be added.
 |      
 |      Returns:
 |              ComplexNumber: A complex number which contains the sum.
Help on method add in module __main__:
add(self, num) unbound __main__.ComplexNumber method
    The function to add two Complex Numbers.
    
    Parameters:
            num (ComplexNumber): The complex number to be added.
    
    Returns:
            ComplexNumber: A complex number which contains the sum.

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