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

Введение

Примеры

Однострочные, встроенные и многострочные комментарии

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

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

Однострочные комментарии начинаются с хэш - символом ( # ) и заканчиваются в конце строки.

  • Однострочный комментарий:
 # This is a single line comment in Python

 
  • Встроенный комментарий:
 print("Hello World")  # This line prints "Hello World"

 
  • Комментарии охватывающих несколько строк есть """ или '''.На обоих концах Это то же самое , как многострочные строки, но они могут быть использованы в качестве комментариев:
 """
This type of comment spans multiple lines.
These are mostly used for documentation of functions, classes and modules.
""" 

Программный доступ к строкам документов

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

Пример функции

 def func():
    """This is a function that does nothing at all"""
    return

 

Строка документации можно получить с помощью __doc__ атрибута:

 print(func.__doc__)

 

Эта функция вообще ничего не делает

 help(func)

 

Справка по функции func в модуле __main__ :

func()

Эта функция вообще ничего не делает

Еще один пример функции

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

 def greet(name, greeting="Hello"):
    """Print a greeting to the user `name`

    Optional parameter `greeting` can change what they're greeted with."""

    print("{} {}".format(greeting, name))
 

помощь (приветствовать)

Справка по функции greet в модуле __main__ :

greet(name, greeting='Hello')

Печать приветствие пользователя name \ Необязательный параметр greeting может изменить то , что они встречали с.

Преимущества строк документации перед обычными комментариями

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

 def greet(name, greeting="Hello"):
    # Print a greeting to the user `name`
    # Optional parameter `greeting` can change what they're greeted with.

    print("{} {}".format(greeting, name))
 

печать (здороваться. документ)

Никто

 help(greet)

 

Справка по функции здороваться в модуле основной:

greet(name, greeting='Hello')

Написать документацию, используя строки документации

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

 def hello(name):
    """Greet someone.

    Print a greeting ("Hello") for the person with the given name.
    """

    print("Hello "+name)
 
 class Greeter:
    """An object used to greet people.

    It contains multiple greeting functions for several languages
    and times of the  day.
    """

 

Значение строки документации можно получить доступ в программе и - например - используется в help команде.

Синтаксические соглашения  ОПТОСОЗ 257

PEP 257 определяет стандарт синтаксиса для комментариев строки документации. Это в основном позволяет два типа:

  • Однострочные строки документов:

Согласно PEP 257 они должны использоваться с короткими и простыми функциями. Все помещается в одну строку, например:

 def hello():
    """Say hello to your friends."""
    print("Hello my friends!")

 

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

  • Многострочные строки документов:

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

 def hello(name, language="en"):
    """Say hello to a person.

    Arguments:
    name: the name of the person
    language: the language in which the person should be greeted
    """

    print(greeting[language]+" "+name)

 

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

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

Sphinx является инструментом для генерации HTML на основе документации для проектов , основанных на Python строки документации. Его язык разметки используется ReStructuredText.Они определяют свои собственные стандарты в отношении документации, pythonhosted.org Саваофа очень хорошее описание их.Формат сфинкса представляет собой, например , используемую PyCharm IDE .

Функция будет документирована следующим образом в формате Sphinx / reStructuredText:

 def hello(name, language="en"):
    """Say hello to a person.

    :param name: the name of the person
    :type name: str
    :param language: the language in which the person should be greeted
    :type language: str
    :return: a number
    :rtype: int
    """

    print(greeting[language]+" "+name)
    return 4

 

Руководство по стилю Google Python

Google опубликовал Google Python Style Guide , который определяет соглашение кодирования для Python, включая комментарии к документации. По сравнению с Sphinx / reST многие говорят, что документация в соответствии с рекомендациями Google лучше читается человеком.

Страница pythonhosted.org упоминалось выше , также приведены некоторые примеры для хорошей документации в соответствии с Руководстве по стилю Google.

Используя Наполеона плагин, Sphinx может также анализировать документацию в Google Style Guide-совместимый формат.

Функция будет документирована следующим образом в формате руководства по стилю Google:

 def hello(name, language="en"):
    """Say hello to a person.

    Args:
        name: the name of the person as string
        language: the language code string

    Returns:
        A number.
    """

    print(greeting[language]+" "+name)
    return 4

 

Синтаксис

Параметры

Примечания