Docstrings vs Комментарии
Я немного смущен различием между docstrings и комментариями в python.
В моем классе мой учитель представил что-то, известное как "рецепт дизайна", набор шагов, который, предположительно, поможет нам обучить студентов и организовать наше кодирование лучше на Python. Из того, что я понимаю, ниже приведен пример шагов, которым мы следуем - это так называется рецепт дизайна (материал в цитатах):
def term_work_mark(a0_mark, a1_mark, a2_mark, ex_mark, midterm_mark):
''' (float, float, float, float, float) -> float
Takes your marks on a0_mark, a1_mark, a2_mark, ex_mark and midterm_mark,
calculates their respective weight contributions and sums these
contributions to deliver your overall term mark out of a maximum of 55 (This
is because the exam mark is not taken account of in this function)
>>>term_work_mark(5, 5, 5, 5, 5)
11.8
>>>term_work_mark(0, 0, 0, 0, 0)
0.0
'''
a0_component = contribution(a0_mark, a0_max_mark, a0_weight)
a1_component = contribution(a1_mark, a1_max_mark, a1_weight)
a2_component = contribution(a2_mark, a2_max_mark, a2_weight)
ex_component = contribution(ex_mark, exercises_max_mark,exercises_weight)
mid_component = contribution(midterm_mark, midterm_max_mark, midterm_weight)
return (a0_component + a1_component + a2_component + ex_component +
mid_component)
Насколько я понимаю, это, в основном, docstring, и в нашей версии docstring он должен включать три вещи: описание, примеры того, что ваша функция должна делать, если вы вводите его в оболочку python, и тип контракт ", раздел, который показывает вам, какие типы вы вводите, и какими типами функция вернется.
Теперь все хорошо и сделано, но наши задания требуют от нас также комментариев, которые объясняют природу наших функций, используя символ токена "#".
Итак, мой вопрос: не я уже объяснил, что моя функция будет делать в разделе описания docstring? Какой смысл добавлять комментарии, если я по существу расскажу читателю то же самое?
Кроме того, на стороне заметки, у меня есть абсолютно ужасающее время, пытаясь заставить этот код правильно выходить один раз в фактический пост. Извини за это. Я не предполагал, что кто-то может указать мне в правильном направлении правильно форматировать код в сообщении?
Ответы
Ответ 1
Кажется, ваш учитель является поклонником "Как создавать программы";)
Я бы решил это как писать для двух разных аудиторий, которые не всегда будут перекрываться.
Сначала есть докстры; они предназначены для людей, которые будут использовать ваш код, не нуждаясь или не желая знать, как это работает. Докстры можно превратить в фактическую документацию. Рассмотрите официальную документацию на Python: что доступно в каждой библиотеке и как ее использовать, нет сведений о реализации (если они напрямую не связаны с использованием)
Во-вторых, есть комментарии в коде; это объяснить, что происходит с людьми (как правило, вы!), которые хотят расширить код. Обычно они не превращаются в документацию, поскольку они действительно касаются самого кода, а не использования. Сейчас существует столько мнений о том, что делает для хороших комментариев (или их отсутствия), поскольку есть программисты. Мои личные эмпирические правила для добавления комментариев объясняют:
- Части кода, которые обязательно сложны. (Оптимизация приходит на ум)
- Обходные пути для кода, который у вас не контролируется, который в противном случае может выглядеть нелогичным.
- Я тоже признаюсь в TODO, хотя я стараюсь свести это к минимуму
- Где я сделал выбор более простого алгоритма, где более эффективная (но более сложная) опция может идти, если производительность в этом разделе становится критически важной.
Так как вы кодируете в академической обстановке, и похоже, что ваш лектор собирается многословно, я бы сказал, что просто рулон с ним. Используйте комментарии к коду, чтобы объяснить, как вы делаете то, что вы говорите, что делаете в рецепте дизайна.
Ответ 2
Прежде всего, для форматирования ваших сообщений вы можете использовать параметры справки над текстовой областью, в которой вы печатаете сообщение.
И о комментариях и строках doc, строка doc объясняет общее использование и базовую информацию о методах. С другой стороны, комментарии предназначены для предоставления конкретной информации о блоках или строках, #TODO используется, чтобы напомнить вам, что вы хотите делать в будущем, определение переменных и так далее. Кстати, в IDLE строка doc отображается как подсказка, когда вы наводите курсор на имя метода.
Ответ 3
Цитата из этой страницы http://www.pythonforbeginners.com/basics/python-docstrings/
Строки документации Python (или docstrings) обеспечивают удобный способ связывания документации с модулями, функциями, классами Python, и методы.
Объект docsting определяется включением строковой константы в качестве первый оператор в определении объекта.
Он указан в исходном коде, который используется, как комментарий, для документируйте определенный сегмент кода.
В отличие от обычных комментариев исходного кода, docstring должен описывать что делает функция, а не как.
Все функции должны иметь docstring
Это позволяет программе проверять эти комментарии во время выполнения, для экземпляр как интерактивная справочная система или метаданные.
Докстры могут быть доступны с помощью атрибута __ doc __ на объектах.
- Доступ к Docstrings можно получить через программу (
__doc__
), где недоступны доступ к встроенным комментариям.
- Интерактивные справочные системы, такие как bpython и IPython, могут использовать docstrings для отображения docsting во время разработки. Чтобы вы не посещали программу каждый раз.
Ответ 4
Я считаю, что стоит упомянуть, что говорит PEP8, я имею в виду чистую концепцию.
Строки документации
Соглашения о написании хороших строк документации (a.k.a. "docstrings" ) увековечиваются в PEP 257.
Запишите docstrings для всех открытых модулей, функций, классов и методов. Docstrings не нужны для непубличных методов, но у вас должен быть комментарий, который описывает, что делает этот метод. Этот комментарий должен появиться после строки def.
PEP 257 описывает хорошие соглашения о док-строках. Обратите внимание, что наиболее важно, что "", которое заканчивается многострочной docstring, должно быть на линии само по себе, например:
"""Return a foobang
Optional plotz says to frobnicate the bizbaz first.
"""
Для одной строки docstrings держите закрытие "" в той же строке.
Комментарии
Блокировать комментарии
Обычно применяются к некоторому (или всем) коду, который следует за ними, и отступы на том же уровне, что и этот код. Каждая строка комментария блока начинается С# и одного пробела (если только текст не заключен в комментарий).
Параграфы внутри комментария блока разделяются линией, содержащей один #.
Встроенные комментарии
Используйте встроенные комментарии экономно.
Встроенный комментарий - это комментарий к той же строке, что и оператор. Встроенные комментарии должны быть разделены по крайней мере двумя пробелами из инструкции. Они должны начинаться С# и одного пробела.
Встроенные комментарии не нужны и на самом деле отвлекают, если они указывают очевидное.
Не делайте этого:
x = x + 1 # Приращение x
Но иногда это полезно:
x = x + 1 # Компенсация для границы
Ссылка