Комментарии в Python
Комментарии – способ прокомментировать код на ходу, на той же строке. Вот пример кода. Здесь, “Получил пользователя” – это комментарий.
user = get_user_by_id(...) # Получил пользователя
Такие комментарии начинаются с символа # . Можно добавить комментарий на отдельной строке:
# Получил пользователя user = get_user_by_id(...)
Комментарии ничего не делают, это просто заметки, которые можно оставлять прямо внутри программы.
Иногда программисты комментируют код, чтобы он перестал работать, но при этом не потерять его из виду:
# Получил пользователя # user = get_user_by_id(. )
Докстринги
Докстринг – строковая переменная, которая идёт сразу за объявлением функции, класса, метода или модуля. Она нужна для документирования всей функции: описания входящих параметров, результата, логики, крайних случаев. Заключается в тройные двойные кавычки. Вот так:
def tensorsolve(a, b, axes=None): """ Solve the tensor equation ``a x = b`` for x. It is assumed that all indices of `x` are summed over in the product, together with the rightmost indices of `a`, as is done in, for example, ``tensordot(a, x, axes=len(b.shape))``. """
В серьёзных проектах из них часто генерируется документация, поэтому они могут быть большими, по несколько экранов. Это касается проектов, у которых есть документация для разработчиков: Django, numpy, sqlalchemy.
Если проект не подразумевает, что им будут пользоваться другие разработчики, такого быть не должно. Длинных докстрингов не должно быть в скрипте ресайза изображений, сайте блога или алгоритме обучения нейронной сети.
Прямо в докстрингах можно писать короткие тесты, их называют доктесты. Ни разу не видел, чтобы кто-то это использовал в боевом проекте.
Как не использовать
Дублировать информацию из кода
Самая частая ошибка, связанная с комментариями: дублирование информации. В таком случае комментарий не несёт дополнительной информации, а просто переводит соседний код с Питона на русский/английский. Пример:
# загружаем данные из файла data.json with open('users.json', 'r') as handler: data = json.load(handler)
Вот как можно исправить:
with open('users.json', 'r') as handler: data = json.load(handler)
А так – ещё лучше:
data = load_all_users_from_file()
Не поддерживать комментарии
Другая частая ошибка: не менять комментарии при изменении кода. В примере выше мы загружали данные из файла. Через месяц взялись за голову и поселили данные в базе данных. Код стал таким:
# загружаем данные из файла data.json data = db_session.query(User).all()
Данные из файла? WAT?
Думать, что все поймут
Когда программист пишет кусок кода, он глубоко в него погружён: держит в голове все детали, связи и особые случаи. В таком состоянии всё поведение кажется понятным, поэтому разработчик может оставить комментарий самому себе. Проблема в том, что когда он переключится на другую задачу и забудет про детали, комментарий может взорвать мозг:
inv(strain_tensor) - rigidity.T # правый случай
Правый, правда? Ну, теперь всё понятно.
Шутить
Шутки к неидеальному коду смотрятся неуместно. Представь, как чувствует себя разработчик, копающийся в чужом коде три часа и находящий новый модуль с заглавным комментарием оставь надежду, всяк сюда входящий . Не будь автором этого комментария. Лучше наведи порядок в своём коде.
Как использовать
Вот хорошие причины использовать комментарии:
- объяснить неочевидное поведение: бывает, что нужно объяснить какой-нибудь подводный камень куска кода или объяснить поведение в особом случае; использовать только если ту же информацию в коде поселить нельзя или очень сложно;
- оставить напоминание себе или коллеге: речь про комментарии вроде TODO: кешировать ответ ручки или FIXME: учитывать часовой пояс .
Прежде чем написать комментарий, попробуй поселить его в коде, указав параметр или дав подходящее название переменной.
Что изучать
- Доклад Григория Петрова про комментирование исходников. Обязателен к просмотру.
- PEP 257. ПЕП про докстринги.
- doctest. Документация к модулю про доктесты.
- What is the best comment in source code you have ever encountered?. Шутить в коде не стоит, а вот посмеяться с чужих шуток можно. Это ж не нам поддерживать.
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Комментирование Python кода
Программирование отражает ваш образ мышления, чтобы описать отдельные шаги, которые вы предприняли для решения проблемы с помощью компьютера. Комментирование вашего кода помогает объяснить ваш мыслительный процесс, а также помогает вам и другим людям понять смысл вашего кода. Это позволяет вам легче находить ошибки, исправлять их, впоследствии улучшать код, а также повторно использовать его и в других приложениях.
Комментирование важно для всех видов проектов, независимо от того, маленькие они, средние или довольно большие. Это важная часть вашего рабочего процесса, и считается хорошей практикой для разработчиков. Без комментариев все может запутаться, очень быстро. В этой статье мы расскажем о различных методах комментирования, поддерживаемых Python, и о том, как его можно использовать для автоматического создания документации для вашего кода с использованием так называемых строк документации уровня модуля.
Хорошие против плохих комментариев
Как бы ни были важны комментарии, все еще можно писать плохие комментарии. Они всегда должны быть короткими, прямолинейными и добавлять информативную ценность.
Например, это довольно бесполезный комментарий:
b = 56 # assigning b a value of 56
Следующий пример демонстрирует более полезный комментарий и дает переменным очевидные имена:
salestax10 = 1.10 # defining a sales tax of 10% salestax20 = 1.20 # defining a sales tax of 20%
Существует бесконечное количество других сценариев, которые заслуживают комментариев. Это только один пример. Хорошее практическое правило — добавлять комментарии к любой строке кода (например, к списку) или к фрагменту кода, цель которого не очевидна. Это очень субъективно, и на самом деле это навык, который необходимо изучить.
Типы комментариев
Комментарий в Python начинается с символа хеша # и продолжается до конца физической строки. Однако хеш-символ внутри строкового значения не рассматривается как комментарий. Если быть точным, комментарий можно написать тремя способами — полностью в отдельной строке, рядом с оператором кода и в виде многострочного блока комментариев.
В следующих разделах я опишу каждый тип комментария.
Однострочные комментарии
Такой комментарий начинается с хеш-символа ( # ) и сопровождается текстом, который содержит дополнительные пояснения.
# defining the post code postCode = 75000
Вы также можете написать комментарий рядом с оператором кода. Следующий пример показывает, это:
# define the general structure of the product with default values product =
Руководство по стилю для кода Python ( PEP8 ) рекомендует менее 79 символов на строку. На практике 70 или 72 символа в строке легче читать, и поэтому рекомендуется. Если ваш комментарий приближается к этой длине или превышает ее, тогда вы захотите распределить его по нескольким строкам.
Многострочные комментарии
Как уже упоминалось выше, весь блок комментариев также понимается Python. Эти комментарии служат встроенной документацией для других, читающих ваш код, и обычно объясняют вещи более подробно
Технически Python не имеет явной поддержки многострочных комментариев, поэтому некоторые варианты считаются обходным решением, но все же работают для многострочных комментариев.
Версия 1 объединяет однострочные комментарии следующим образом:
# LinuxThingy version 1.6.5 # # Parameters: # # -t (--text): show the text interface # -h (--help): display this help
Версия 2 проще, чем версия 1. Изначально она предназначалась для создания документации (подробнее об этом ниже), но ее также можно использовать для многострочных комментариев.
""" LinuxThingy version 1.6.5 Parameters: -t (--text): show the text interface -h (--help): display this help """
Обратите внимание, что последняя версия должна быть заключена в специальные кавычки ( «»» ) для работы, а не хеш-символы.
Обычная практика
Довольно часто начинать Python-файл с нескольких строк комментариев. В этих строках указывается информация о проекте, назначении файла, программисте, который его разработал или работал над ним, и лицензии на программное обеспечение, которое используется для кода.
Этот фрагмент взят из одного из примеров, которые я использую в учебных целях. Комментарий начинается с описания, за ним следует уведомление об авторских правах с моим именем и год публикации кода. Ниже вы увидите, что код лицензирован под GNU Public License ( GPL ). Для того, чтобы связаться со мной, мой адрес электронной почты также добавлен туда.
# ----------------------------------------------------------- # demonstrates how to write ms excel files using python-openpyxl # # (C) 2015 Frank Hofmann, Berlin, Germany # Released under GNU Public License (GPL) # email frank.hofmann@efho.de # -----------------------------------------------------------
Комментарии документации
Python имеет встроенную концепцию под названием «строки документации», которая является отличным способом связать написанную вами документацию с модулями, функциями, классами и методами Python. Строка документа добавляется в качестве комментария прямо под заголовком функции, модуля или объекта и описывает действия функции, модуля или объекта. Ожидается, что будут следовать этим правилам:
Строка документа — это либо однострочный, либо многострочный комментарий. В последнем случае первая строка является кратким описанием, а после первой строки следует пустая строка.
Начните строку документа с заглавной буквы и завершите ее точкой.
Это основной пример того, как это выглядит:
def add(value1, value2): """Calculate the sum of value1 and value2.""" return value1 + value2
В интерактивной справочной системе Python строка документации становится доступной через атрибут __doc__ .
>>> print add.__doc__ Calculate the sum of value1 and value2.
Существует ряд инструментов, которые автоматически генерируют документацию из строк документации, таких как Doxygen, PyDoc, pdoc и расширение autodoc для Sphinx. Мы объясним вам, как работать с ними в следующей статье.
Заключение
Написание правильных комментариев в вашем коде Python не так сложно, и вам просто нужна сила выносливости. Это помогает всем, кто пытается понять ваш код, включая вас самих, когда вы в следующий раз вернетесь к нему. Мы надеемся, что совет, который мы дали вам здесь, облегчит вам создание более качественных комментариев и документации в вашем коде.
Написание комментариев в Python 3
Комментарии – это строки, которые существуют в коде программы, но игнорируются компиляторами и интерпретаторами. Комментарии делают код более удобочитаемым, так как позволяют предоставить пользователям дополнительную информацию или добавить объяснение того или иного блока кода.
В зависимости от цели программы комментарии могут служить в качестве примечаний. Также с их помощью вы можете объяснить другим программистам, что делает та или иная часть кода программы.
Комментарии в программу рекомендуется добавлять по мере написания или обновления кода, так как позже вы можете пропустить что-то важное.
Синтаксис комментариев
Комментарии в Python начинаются с хеша (символа #), после которого ставится пробел.
Общий вид комментария:
# This is a comment
Строки комментариев не выполняются, потому при запуске программы вы не увидите никаких признаков наличия в ней комментариев. Комментарии находятся в исходном коде для простоты чтения кода программы другими пользователями, а не для выполнения.
В простейшей программе «Hello, World!» комментарий может выглядеть так:
# Print “Hello, World!” to console
print(«Hello, World!»)
В цикле for, который итерирует списки, могут быть такие комментарии:
# Define sharks variable as a list of strings
sharks = [‘hammerhead’, ‘great white’, ‘dogfish’, ‘frilled’, ‘bullhead’, ‘requiem’] # For loop that iterates over sharks list and prints each string item
for shark in sharks:
print(shark)
При размещении комментария следует учитывать отступы в коде, для которого он предназначен. То есть, если определение функции не имеет отступов, то и комментарий к этому определению не должен иметь отступов.
Для примера рассмотрим функцию again() из руководства Написание простейшего калькулятора в Python 3:
.
# Define again() function to ask user if they want to use the calculator again
def again():
# Take input from user
calc_again = input(»’
Do you want to calculate again?
Please type Y for YES or N for NO.
»’)
# If user types Y, run the calculate() function
if calc_again == ‘Y’:
calculate()
# If user types N, say good-bye to the user and end the program
elif calc_again == ‘N’:
print(‘See you later.’)
# If user types another key, run the function again
else:
again()
Комментарии должны помогать программистам работать с кодом. Если же по какой-либо причине вы не можете предоставить должную поддержку и своевременное обновление комментариев, лучше их вообще не использовать. Код без комментариев лучше, чем код с неправильными комментариями.
В комментарии рекомендуется указывать, почему этот код выполняет то или иное действие (а не как или что он делает). В большинстве случаев программист, ознакомившись с кодом, может сам определить, что именно выполняет код и каким образом он это делает.
Блочные комментарии
Блочные комментарии могут объяснить более сложный код или код, с которым пользователям будет трудно разобраться самостоятельно. Такой блок комментариев должен иметь столько же отступов, сколько блок кода, который он объясняет.
В блочных комментариях каждая строка начинается с хеша и пробела. Чтобы разделить блок комментариев на абзацы, поставьте с новой строки хеш и оставьте строку пустой.
Следующий блочный комментарий описывает действия функции main().
# The main function will parse arguments via the parser variable. These
# arguments will be defined by the user on the console. This will pass
# the word argument the user wants to parse along with the filename the
# user wants to use, and also provide help text if the user does not
# correctly pass the arguments.
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
«word»,
help=»the word to be searched for in the text file.»
)
parser.add_argument(
«filename»,
help=»the path to the text file to be searched through»
)
.
Блочные комментарии обычно используются в случае, если код требует подробного объяснения. Однако следует избегать чрезмерного количества комментариев в коде программы.
Строчные комментарии
Строчные комментарии следуют за кодом (то есть, находятся в одной строке с теми выражениями, которые они объясняют).
Строчный комментарий выглядит так:
# Inline comment about the code
Строчные комментарии позволяют дать краткое объяснение для непонятной части кода, однако их нужно использовать с осторожностью. Часто их используют в качестве кратких примечаний для других пользователей.
Например, если вы предполагаете, что другие разработчики из вашей команды не знают, что следующее выражение создает комплексное число, вы можете добавить строчный комментарий:
z = 2.5 + 3j # Create a complex number
Также строчный комментарий может объяснить, почему вы используете здесь тот или иной элемент:
x = 8 # Initialize x with an arbitrary number
Строчные комментарии следует использовать крайне редко.
Комментирование кода перед тестированием
Кроме документации кода, комментарии также используются в тестировании программ. К примеру, так вы можете закомментировать ту часть кода, которую не нужно обрабатывать во время проверки программы. Если после внедрения нового кода программа выдаёт ошибки, вы можете закомментировать некоторые строки нового кода, чтобы узнать, в чём проблема.
Кроме того, комментарии позволяют вам добавить в код несколько альтернативных блоков и проверить, какой из них вам подходит больше. Например, вы можете добавить в программу цикл while и цикл for, а затем с помощью комментариев проверить работу каждого из них в отдельности и выбрать тот, что подходит больше.
import random
number = random.randint(1, 25)
# number_of_guesses = 0
for i in range(5):
# while number_of_guesses < 5:
print(‘Guess a number between 1 and 25:’)
guess = input()
guess = int(guess)
# number_of_guesses = number_of_guesses + 1
if guess < number:
print(‘Your guess is too low’)
if guess > number:
print(‘Your guess is too high’)
if guess == number:
break
if guess == number:
print(‘You guessed the number!’)
else:
rint(‘You did not guess the number. The number was ‘ + str(number))
Читайте также:
- Циклы while в Python 3
- Циклы for в Python 3
С помощью символа # вы можете протестировать несколько вариантов кода, обнаружить ошибки или запустить только ту часть кода, которая нуждается в дополнительной проверке.
Заключение
Благодаря комментариям код программы становится удобочитаемым и понятным. Это упрощает взаимодействие других разработчиков с кодом ваших программ.
Читайте также: PEP 257
Комментарии в Python: как закомментировать блок кода
В этой статье мы расскажем о комментариях в Python. Разберемся, зачем они нужны и как их использовать.
Когда нужно использовать комментарии в Python
Давайте разберем два самых общих случая использования комментариев в коде. В принципе, это касается не только Python, но и любого другого языка программирования.
Итак, комментарии нужны, чтобы:
- Предотвратить выполнение кода. Иногда вам нужно сделать так, чтобы часть написанного кода не выполнялась. Возможно, она не нужна вам именно в этот момент, но вы планируете использовать ее в дальнейшем. В таком случае эту часть кода можно «закомментировать», т. е. оформить как комментарий.
- Улучшить читаемость. Это очень важно, и не только для нас самих, но и для других разработчиков. При помощи комментариев мы можем объяснить, что делает каждый блок кода. Когда другие разработчики будут читать наш код, благодаря комментариям им будет легко понять, для чего предназначена каждая его часть.
Как (за)комментировать код на Python
В разных языках программирования синтаксис комментариев тоже разный. В Python комментарии начинаются с символа #. Вот пример:
# Код, расположенный ниже, выводит в консоль фразу Hello World! print("Hello World!")
В этом коде я использовал комментарий для пояснения, что делает код. Когда этот код выполняется, интерпретатор игнорирует комментарий и запускает функцию print() .
Мы также можем закомментировать собственно сам код:
# print("Hello World!") print("Happy coding!")
При запуске этого кода будет интерпретироваться только вторая строка.
Комментарии не всегда располагаются над строкой кода, к которой они относятся. Вы можете вставлять их в саму строку:
print("Hello world") # Выводит Hello World
Как делать многострочные комментарии в Python
В отличие от других языков программирования, в Python нет встроенного синтаксиса для создания многострочных комментариев.
К счастью, есть два способа обойти эту проблему. Первый:
# При запуске этого кода # вы видите Hello World! # в консоли. print("Hello world")
Мы можем разделять комментарий на строки, помещая при этом символ # в начале каждой строки.
В следующем примере для размещения комментария мы используем многострочные строки (multi-line strings). Они начинаются и заканчиваются тремя кавычками (сами кавычки могут быть как двойными, так и одинарными).
""" При запуске этого кода вы видите Hello World! в консоли. """ print("Hello World!")
При использовании многострочных строк без присвоения строки в качестве значения переменной эта часть кода игнорируется.
Примечание: важно не забывать об отступах. Если сделаете неправильный отступ перед первым блоком кавычек, получите SyntaxError.
Заключение
Итак, в этой статье мы разобрали, как могут использоваться комментарии в Python, а также рассмотрели их синтаксис. Теперь у вас не должно возникнуть проблем с комментированием кода.
