Python 3 комментарии: Комментирование 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 = {  
   "productId": 0,          # product reference id, default: 0
   "description": "",       # item description, default: empty
   "categoryId": 0,         # item category, default: 0
   "price": 0.00            # price, default: 0.00
}

Руководство по стилю для кода 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 [email protected]
# -----------------------------------------------------------

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

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 не так сложно, и вам просто нужна сила выносливости. Это помогает всем, кто пытается понять ваш код, включая вас самих, когда вы в следующий раз вернетесь к нему. Мы надеемся, что совет, который мы дали вам здесь, облегчит вам создание более качественных комментариев и документации в вашем коде.

Перевод статьи: Commenting Python Code

Пишем комментарии в Python правильно, примеры кода ~ PythonRu

Предыдущий урок: Инструкции и выражения

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

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

Комментарии — это способ выражения того, что делает программа на самом высоком уровне. Это отмеченные строчки, которые комментируют код. В Python они бывают двух типов: одно- и многострочные.

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

Такой тип комментариев нужен для написания простых, быстрых комментариев во время отладки. Такие комментарии начинаются с символа решетки # и автоматически заканчиваются символом окончания строки (EOL).

					

# Хороший код документируется

print("Изучите Python шаг за шагом!")

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

					

# Создадим список месяцев
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul','Aug','Sep','Oct','Nov','Dec']

# Функция вывода календарных месяцев
def showCalender(months):
# Цикл for проходит по списку и вводит название каждого месяца
for month in months:
print(month)

showCalender(months)

Многострочные комментарии в Python

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

Этот тип комментариев нужен для описания всего последующего кода. Дальше примеры многострочных комментариев в Python.

С помощью символа #

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

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

Примечание: в оригинале этот символ (#) называется octothorpe, что переводится с латинского как «восемь концов». Термин придумала группа инженеров в Bell Labs, которая работала над проектом первой сенсорной клавиатуры.

					

# Чтобы выучить любой язык, вы должны следовать этим правилам.
# 1. Знать синтаксис, типы данных, структуры и условные операторы.
# 2. Изучить обработку ошибок и ввод/вывод.
# 3. Читайте о продвинутых структурах данных.
# 4. Пишите функции и следуйте концепциям ООП.

def main():
print("Начнем изучать Python.")

Docstring в Python

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

Задать docstring можно с помощью строковой константы. Она обязана быть первой инструкцией в определении объекта.

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

Как задать docstring в Python?

Задать docstring в Python можно с помощью тройных кавычек Нужно добавить один набор в начале и еще один – в конце. Docstring также могут занимать по несколько строк.

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

В чем отличие между комментарием и docstring?

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

Интерпретатор Python не будет игнорировать их так же, как комментарии. Но если такая строка расположена сразу же после объявления функции или класса в верхней части модуля, то она станет docstring. Получить к ним доступ можно следующим образом — myobj.__doc__.

					

def theFunction():
'''
Эта функция демонстрирует использование docstring в Python.
'''
print("docstring python не являются комментариями.")

print("\nВыведем docstring функции...")
print(theFunction.__doc__)

Выводы

Комментарии и docstring добавляют ценности программе. Они делают программы более читаемыми и пригодными для последующей поддержки. Даже при рефакторинге сделать это будет намного проще с комментариями.

Разработка программного обеспечения — это лишь на 10% написание кода. Остальные 90% — поддержка.

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

Далее: Приоритетность операторов

Python комментарии — многострочные для блока кода и закомментирование строки: docstring

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

Что такое комментарии и зачем они нужны?

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

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

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

Однострочные

В каждом отдельно взятом языке программирования используется собственный синтаксис однострочных комментариев. Зачастую в роли специального оператора, который сообщает компьютеру о том, что следующая строка является комментарием, задействуется двойной слеш (//). В Python эту функцию выполняет обычный символ решетки (#). Следующий код демонстрирует создание двух однострочных комментариев внутри самой программы.

# this is a comment
# print("Hello World!")

Если запустить программу с этим кодом на выполнение, ничего не произойдет, поскольку, как уже было сказано ранее, комментарии полностью игнорируются компьютером. Писать пояснения можно не только на английском, но и на русском языке. Для русских комментариев в Python нужно подключить кодировку UTF-8 (Unicode Transformation Format, 8-bit). В противном случае, компилятор выдаст ошибку, не сумев правильно распознать символы кириллицы.

# coding: utf-8
# это комментарий

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

# coding: utf-8
# начало программы
print("Hello World!") # выводим приветствие на экран
# конец программы

Создавая комментарии, необходимо принять во внимание тот факт, что символ решетки не задействуется по прямому назначению, если заключен в строковый литерал. В приведенном ниже фрагменте кода данный оператор является частью строки под названием string. Работая в IDE (Integrated Development Environment), можно увидеть, что комментарии автоматически выделяются курсивом и обладают особой подсветкой, облегчающей их распознавание.

string = "# это не комментарий"

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

string = "text" ####### это комментарий #######

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

Многострочные

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

# coding: utf-8
# программа Hello World
# создает и выводит строку на экран
# начало программы
greeting = "Hello World!" # создаем строку
print(greeting) # выводим строку на экран
# конец программы

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

Однако современные IDE и редакторы кода, такие как PyCharm или NetBeans способны не только отображать синтаксис языка, но также поддерживают множество горячих клавиш для более быстрого написания программ. С их помощью можно моментально закомментировать огромный блок кода, а также оперативно избавиться от символов решетки в начале каждой строки. Это существенно ускоряет работу программиста и улучшает удобство тестирования.

Так, например, чтобы закомментировать несколько строк Python кода, в PyCharm, следует их выделить и нажать комбинацию клавиш <Ctrl>+</>.

Docstring

Для создания документации к различным модулям, классам, функциям и методами в Python широко применяется такой инструмент как docstring. Согласно официальному соглашению PEP 8 (Python Enhancement Proposal), которое содержит в себе комплекс общепринятых норм по написанию кода, в Python docstring необходимо использовать в качестве поясняющей конструкции для всех создаваемых блоков кода. Такие примечания необходимо помещать сразу же после определения класса, метода, функции или модуля, заключая текст в тройные кавычки.

# coding: utf-8
# программа Hello World
def greeting():
    """Функция приветствия.

    Создает и выводит строку на экран.
    """
    greeting = "Hello World!" # создаем строку
    print(greeting) # выводим строку на экран
greeting() # вызываем функцию greeting()
print(greeting.__doc__) # выводим docstring

Данный пример демонстрирует работу функции greeting(), которая создает строку и выдает ее на экран. Здесь применяется конструкция docstring, сообщающая программисту основные сведения о вызываемом методе. В отличие от обычных комментариев, docstring, как правило, обрабатывается компилятором и помещается в полученный байт-код. Во время выполнения программы записанные ранее сведения можно вывести на экран с помощью метода __doc__.

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

Применение docstring в качестве комментария

Несмотря на отсутствие прямой возможности создавать в коде Python 3 многострочные комментарии, язык Python позволяет использовать инструмент docstring для их замены. Сделать это можно при помощи тройных кавычек, просто поместив в них нужный текст. Таким образом, создается многострочный литерал, который не принадлежит какому-либо объекту, а поэтому не играет никакой роли во время обработки программного кода компилятором. Следующий пример демонстрирует применение docstring в качестве многострочного примечания в коде.

# coding: utf-8
"""
программа Hello World
создает и выводит строку на экран
"""
# начало программы
greeting = "Hello World!" # создаем строку
print(greeting) # выводим строку на экран
# конец программы

Несмотря на простоту такого подхода, пользоваться им не рекомендуется, так как основным назначением docstring является документирование объектов.

Если тройные кавычки будут помещены сразу же после объявления метода или класса, компилятор воспримет их не как комментарий, а как описание docstring.

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

Заключение

Комментарии в языке программирования Python используются для создания собственных пояснений к исходному коду программы. Это позволяет улучшить его понимание другими людьми в процессе командной работы над большими проектами. В языке предусмотрены только однострочные комментарии, однако при помощи текстовых блоков можно получить аналог многострочных комментариев. Для создания документации к отдельным функциям, методам, классам и модулям применяются конструкции docstring. Общепринятые правила документирования исходного кода подробно описаны в сборнике рекомендаций PEP 8.

Многострочные комментарии в Python

Поддерживает ли Python многострочные комментарии так, как это реализовано в других языках? Какие варианты написания блочных комментариев в Python?

В большинстве языков программирования присутствует синтаксис для блочных комментариев, которые охватывают несколько строк текста, например C или Java:

/*
Блочный комментарий.
Охватывает несколько строк.
*/
int answer = 42;

Есть ли в Python аналогичные многострочные комментарии? Короткий ответ: нет, по крайней мере, не совсем точно так же.

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

Вариант 1: последовательные однострочные комментарии

Первым вариантом для комментирования нескольких строк кода в Python является простое использование # однострочного комментария для каждой строки:

# Это «блочный комментарий» в Python, сделанный
# из нескольких однострочных комментариев.

answer = 42

Большинство проектов Python следуют этому стилю, а руководство по стилю написания кода PEP 8 Python также рекомендует использовать повторяющиеся однострочные комментарии. Поэтому в большинстве случаях рекомендуется использовать их. Это также единственный способ написать «реальных» блочных комментариев в Python, которые игнорируется парсером.

Т.к. Python не поддерживает истинные многострочные комментарии, то для того чтобы закомментировать несколько строк кода требуется больше усилий. Приведём ряд полезных советов по ускорения работы с ними. У большинства редакторов кода есть шорткаты для блочных комментариев. Например, в Sublime Text достаточно просто выбирать пару строк, используя shift и клавиши курсора (или мышь), а затем нажимать cmd + /, чтобы закомментировать их все сразу.

Это даже работает в обратном порядке, то есть можно выбрать блок однострочных комментариев, и когда набирается клавиатурный шорткат cmd + /, весь блок снова раскомментируется.

Другие редакторы тоже поддерживают такую возможность: Atom, VS Code и даже Notepad++ имеют встроенные шорткаты для блочного комментирования в Python. Управление комментариями Python вручную – это неблагодарная работа, поэтому такая функция редактора может сэкономить много времени.

Вариант 2: использование многострочных строк вместо комментариев

Ещё одним вариантом для написания «правильных» многострочных комментариев в Python является использование многострочных строк с синтаксисом «»» (три кавычки). Например:

"""
Блок комментариев в Python, сделанный
из многострочной строковой константы.
"""
answer = 42

Можно использовать тройные кавычки для создания чего-то, что напоминает многострочный комментарий в Python. Необходимо убедиться, что правильно ввели «»», иначе будет получено исключение SyntaxError. Например, если нужно определить блочный комментарий внутри функции с помощью такого синтаксиса, то должны выполнить это следующим образом:

def add_stuff(a, b):
    result = a + b
    """
    Теперь возвращается результат.
    Ещё один пример многострочного комментария.
    """
    return result

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

Тем не менее, такая потерянная строковая константа не будет отображаться в байт-коде, фактически превращая её в многострочный комментарий. Далее доказательство того, что неиспользуемая строка не будет отображаться в дизассемблированном байт-коде CPython:

>>> import dis
>>> dis.dis(add_stuff)
  2    0 LOAD_FAST      0 (a)
       2 LOAD_FAST      1 (b)
       4 BINARY_ADD
       6 STORE_FAST     2 (result)
  8    8 LOAD_FAST      2 (result)
      10 RETURN_VALUE

Однако будьте осторожны, когда помещаете такие «комментарии» в код. Если строка следует сразу после сигнатуры функции, определения класса или в начале модуля, она превращается в docstring, которая имеет совсем другое значение в Python:

def add_stuff(a, b):
    """
    Это теперь связанная с docstring функция
     с объектом функции и доступным как
     метаданные времени выполнения.
    """
    result = a + b
    return result

Docstrings («строки документации») позволяют сопоставлять удобочитаемую документацию с модулями, функциями, классами и методами Python. Они отличаются от комментариев исходного кода.

Комментарий удаляется парсером, тогда как docstring встраивается в байт-код и ассоциируется с документированием объекта. Её можно даже запросить к программному объекту во время выполнения.

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

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

Выводы

  • В отличие от других языков программирования Python не поддерживает многострочные комментарии из коробки.
  • Рекомендуемый способ закомментировать несколько строк кода в Python — использовать последовательные # однострочные комментарии. Это единственный способ получить «истинные» комментарии в исходном коде, которые удаляются парсером Python.
  • Вы можете использовать строки с тремя кавычками «»», чтобы создать что-то похожее на многострочные комментарии в Python, но это не идеальный метод, и такие могут превратиться в случайные docstrings.

Как комментировать в Python | ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

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

Комментарии должны быть краткими и точными. Не объясняйте что-то очевидное для читателя.

В этой статье рассматриваются основы написания комментариев на Python.

 

Python игнорирует все, что написано в строке после хеш-метки (#).

Комментарии могут быть добавлены в начале строки или встроены в другой код:

# Это комментарий Python.
print("Привет Мир") # Это встроенный комментарий Python.

Пробел после хеш-метки не обязателен, но он улучшит читабельность комментария.

Символ хеша внутри строкового литерала не указывает на начало строки комментария. Это просто хэш-символ:

paragraph = "# Хэш внутри кавычек-это не комментарий."

Комментарии должны быть на том же уровне отступа, что и код под ними:

```py
def factorial(n):
  if n == 0:
    return 1
  else:
    # Используйте функцию факториала
    return n * factorial(n-1)

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

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

# for fruit in fruits:
#   print(fruit)

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

Самый простой способ написать многострочные комментарии в Python – добавить однострочные комментарии один за другим:

# Это первая строка.
# Это вторая строка.

Другой вариант – использовать строки документации.

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

Строка документа начинается и заканчивается тройными двойными кавычками ( “””) и может занимать одну или несколько строк:

"""Это 
многострочная строка 
документа.
"""

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

 

Python

Если вы читаете скрипты Python, вы можете заметить, что в некоторых из них первая строка начинается с символов #! и пути к интерпретатору Python:

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

Поскольку строка shebang начинается с символа хеша, она рассматривается как комментарий и автоматически игнорируется интерпретатором Python.

 

Вывод

Написание комментариев является хорошей практикой и помогает другим разработчикам, в том числе будущим, понять, что делает код. В Python все после хеш-метки ( #) и до конца строки считается комментарием.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

PEP 8 — руководство по написанию кода на Python

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

PEP 8 создан на основе рекомендаций Гуидо ван Россума с добавлениями от Барри. Если где-то возникал конфликт, мы выбирали стиль Гуидо. И, конечно, этот PEP может быть неполным (фактически, он, наверное, никогда не будет закончен).

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

Это руководство о согласованности и единстве. Согласованность с этим руководством очень важна. Согласованность внутри одного проекта еще важнее. А согласованность внутри модуля или функции — самое важное. Но важно помнить, что иногда это руководство неприменимо, и понимать, когда можно отойти от рекомендаций. Когда вы сомневаетесь, просто посмотрите на другие примеры и решите, какой выглядит лучше.

Две причины для того, чтобы нарушить данные правила:

Внешний вид кода

Отступы

Используйте 4 пробела на каждый уровень отступа.

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

Правильно:

# Выровнено по открывающему разделителю
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# Больше отступов включено для отличения его от остальных
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

Неправильно:

# Аргументы на первой линии запрещены, если не используется вертикальное выравнивание
foo = long_function_name(var_one, var_two,
    var_three, var_four)

# Больше отступов требуется, для отличения его от остальных
def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

Опционально:

# Нет необходимости в большем количестве отступов.
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)

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

my_list = [
    1, 2, 3,
    4, 5, 6,
    ]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
    )

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

my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

Табуляция или пробелы?

Пробелы — самый предпочтительный метод отступов.

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

Python 3 запрещает смешивание табуляции и пробелов в отступах.

Python 2 пытается преобразовать табуляцию в пробелы.

Когда вы вызываете интерпретатор Python 2 в командной строке с параметром -t, он выдает предупреждения (warnings) при использовании смешанного стиля в отступах, а запустив интерпретатор с параметром -tt, вы получите в этих местах ошибки (errors). Эти параметры очень рекомендуются!

Максимальная длина строки

Ограничьте длину строки максимум 79 символами.

Для более длинных блоков текста с меньшими структурными ограничениями (строки документации или комментарии), длину строки следует ограничить 72 символами.

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

Некоторые команды предпочитают большую длину строки. Для кода, поддерживающегося исключительно или преимущественно этой группой, в которой могут прийти к согласию по этому вопросу, нормально увеличение длины строки с 80 до 100 символов (фактически увеличивая максимальную длину до 99 символов), при условии, что комментарии и строки документации все еще будут 72 символа.

Стандартная библиотека Python консервативна и требует ограничения длины строки в 79 символов (а строк документации/комментариев в 72).

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

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

with open('/path/to/some/file/you/want/to/read') as file_1, \
        open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

Ещё один случай — assert.

Сделайте правильные отступы для перенесённой строки. Предпочтительнее вставить перенос строки после логического оператора, но не перед ним. Например:

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if (width == 0 and height == 0 and
                color == 'red' and emphasis == 'strong' or
                highlight > 100):
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)

Пустые строки

Отделяйте функции верхнего уровня и определения классов двумя пустыми строками.

Определения методов внутри класса разделяются одной пустой строкой.

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

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

Python расценивает символ control+L как незначащий (whitespace), и вы можете использовать его, потому что многие редакторы обрабатывают его как разрыв страницы — таким образом логические части в файле будут на разных страницах. Однако, не все редакторы распознают control+L и могут на его месте отображать другой символ.

Кодировка исходного файла

Кодировка Python должна быть UTF-8 (ASCII в Python 2).

Файлы в ASCII (Python 2) или UTF-8 (Python 3) не должны иметь объявления кодировки.

В стандартной библиотеке, нестандартные кодировки должны использоваться только для целей тестирования, либо когда комментарий или строка документации требует упомянуть имя автора, содержащего не ASCII символы; в остальных случаях использование \x, \u, \U или \N — наиболее предпочтительный способ включить не ASCII символы в строковых литералах.

Начиная с версии python 3.0 в стандартной библиотеке действует следующее соглашение: все идентификаторы обязаны содержать только ASCII символы, и означать английские слова везде, где это возможно (во многих случаях используются сокращения или неанглийские технические термины). Кроме того, строки и комментарии тоже должны содержать лишь ASCII символы. Исключения составляют: (а) test case, тестирующий не-ASCII особенности программы, и (б) имена авторов. Авторы, чьи имена основаны не на латинском алфавите, должны транслитерировать свои имена в латиницу.

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

Импорты

  • Каждый импорт, как правило, должен быть на отдельной строке.

    Правильно:

    import os
    import sys

    Неправильно:

    import sys, os

    В то же время, можно писать так:

    from subprocess import Popen, PIPE
  • Импорты всегда помещаются в начале файла, сразу после комментариев к модулю и строк документации, и перед объявлением констант.

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

    1. импорты из стандартной библиотеки
    2. импорты сторонних библиотек
    3. импорты модулей текущего проекта

    Вставляйте пустую строку между каждой группой импортов.

    Указывайте спецификации __all__ после импортов.

  • Рекомендуется абсолютное импортирование, так как оно обычно более читаемо и ведет себя лучше (или, по крайней мере, даёт понятные сообщения об ошибках) если импортируемая система настроена неправильно (например, когда каталог внутри пакета заканчивается на sys.path):

    import mypkg.sibling
    from mypkg import sibling
    from mypkg.sibling import example

    Тем не менее, явный относительный импорт является приемлемой альтернативой абсолютному импорту, особенно при работе со сложными пакетами, где использование абсолютного импорта было бы излишне подробным:

    from . import sibling
    from .sibling import example

    В стандартной библиотеке следует избегать сложной структуры пакетов и всегда использовать абсолютные импорты.

    Неявные относительно импорты никогда не должны быть использованы, и были удалены в Python 3.

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

    from myclass import MyClass
    from foo.bar.yourclass import YourClass

    Если такое написание вызывает конфликт имен, тогда пишите:

    import myclass
    import foo.bar.yourclass

    И используйте «myclass.MyClass» и «foo.bar.yourclass.YourClass».

  • Шаблоны импортов (from import *) следует избегать, так как они делают неясным то, какие имена присутствуют в глобальном пространстве имён, что вводит в заблуждение как читателей, так и многие автоматизированные средства. Существует один оправданный пример использования шаблона импорта, который заключается в опубликовании внутреннего интерфейса как часть общественного API (например, переписав реализацию на чистом Python в модуле акселератора (и не будет заранее известно, какие именно функции будут перезаписаны).

Комментарии

Комментарии, противоречащие коду, хуже, чем отсутствие комментариев. Всегда исправляйте комментарии, если меняете код!

Комментарии должны являться законченными предложениями. Если комментарий — фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не изменяйте регистр переменной!).

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

Ставьте два пробела после точки в конце предложения.

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

Блоки комментариев

Блок комментариев обычно объясняет код (весь, или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).

Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа #.

«Встрочные» комментарии

Старайтесь реже использовать подобные комментарии.

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

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

x = x + 1                 # Increment x

Впрочем, такие комментарии иногда полезны:

x = x + 1                 # Компенсация границы

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

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

  • PEP 257 объясняет, как правильно и хорошо документировать. Заметьте, очень важно, чтобы закрывающие кавычки стояли на отдельной строке. А еще лучше, если перед ними будет ещё и пустая строка, например:

    """Return a foobang
    
    Optional plotz says to frobnicate the bizbaz first.
    
    """
  • Для однострочной документации можно оставить закрывающие кавычки на той же строке.

Соглашения по именованию

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

Главный принцип

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

Описание: Стили имен

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

Обычно различают следующие стили:

  • b (одиночная маленькая буква)
  • B (одиночная заглавная буква)
  • lowercase (слово в нижнем регистре)
  • lower_case_with_underscores (слова из маленьких букв с подчеркиваниями)
  • UPPERCASE (заглавные буквы)
  • UPPERCASE_WITH_UNDERSCORES (слова из заглавных букв с подчеркиваниями)
  • CapitalizedWords (слова с заглавными буквами, или CapWords, или CamelCase). Замечание: когда вы используете аббревиатуры в таком стиле, пишите все буквы аббревиатуры заглавными — HTTPServerError лучше, чем HttpServerError.
  • mixedCase (отличается от CapitalizedWords тем, что первое слово начинается с маленькой буквы)
  • Capitalized_Words_With_Underscores (слова с заглавными буквами и подчеркиваниями — уродливо!)

Ещё существует стиль, в котором имена, принадлежащие одной логической группе, имеют один короткий префикс. Этот стиль редко используется в python, но мы упоминаем его для полноты. Например, функция os.stat() возвращает кортеж, имена в котором традиционно имеют вид st_mode, st_size, st_mtime и так далее. (Так сделано, чтобы подчеркнуть соответствие этих полей структуре системных вызовов POSIX, что помогает знакомым с ней программистам).

В библиотеке X11 используется префикс Х для всех public-функций. В python этот стиль считается излишним, потому что перед полями и именами методов стоит имя объекта, а перед именами функций стоит имя модуля.

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

  • _single_leading_underscore: слабый индикатор того, что имя используется для внутренних нужд. Например, from M import * не будет импортировать объекты, чьи имена начинаются с символа подчеркивания.

  • single_trailing_underscore_: используется по соглашению для избежания конфликтов с ключевыми словами языка python, например:

    Tkinter.Toplevel(master, class_='ClassName')
  • __double_leading_underscore: изменяет имя атрибута класса, то есть в классе FooBar поле __boo становится _FooBar__boo.

  • __double_leading_and_trailing_underscore__ (двойное подчеркивание в начале и в конце имени): магические методы или атрибуты, которые находятся в пространствах имен, управляемых пользователем. Например, __init__, __import__ или __file__. Не изобретайте такие имена, используйте их только так, как написано в документации.

Предписания: соглашения по именованию

Имена, которых следует избегать

Никогда не используйте символы l (маленькая латинская буква «эль»), O (заглавная латинская буква «о») или I (заглавная латинская буква «ай») как однобуквенные идентификаторы.

В некоторых шрифтах эти символы неотличимы от цифры один и нуля. Если очень нужно l, пишите вместо неё заглавную L.

Имена модулей и пакетов

Модули должны иметь короткие имена, состоящие из маленьких букв. Можно использовать символы подчеркивания, если это улучшает читабельность. То же самое относится и к именам пакетов, однако в именах пакетов не рекомендуется использовать символ подчёркивания.

Так как имена модулей отображаются в имена файлов, а некоторые файловые системы являются нечувствительными к регистру символов и обрезают длинные имена, очень важно использовать достаточно короткие имена модулей — это не проблема в Unix, но, возможно, код окажется непереносимым в старые версии Windows, Mac, или DOS.

Когда модуль расширения, написанный на С или C++, имеет сопутствующий python-модуль (содержащий интерфейс высокого уровня), С/С++ модуль начинается с символа подчеркивания, например, _socket.

Имена классов

Имена классов должны обычно следовать соглашению CapWords.

Вместо этого могут использоваться соглашения для именования функций, если интерфейс документирован и используется в основном как функции.

Обратите внимание, что существуют отдельные соглашения о встроенных именах: большинство встроенных имен — одно слово (либо два слитно написанных слова), а соглашение CapWords используется только для именования исключений и встроенных констант.

Имена исключений

Так как исключения являются классами, к исключениями применяется стиль именования классов. Однако вы можете добавить Error в конце имени (если, конечно, исключение действительно является ошибкой).

Имена глобальных переменных

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

Добавляйте в модули, которые написаны так, чтобы их использовали с помощью from M import *, механизм __all__, чтобы предотвратить экспортирование глобальных переменных. Или же, используйте старое соглашение, добавляя перед именами таких глобальных переменных один символ подчеркивания (которым вы можете обозначить те глобальные переменные, которые используются только внутри модуля).

Имена функций

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

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

Аргументы функций и методов

Всегда используйте self в качестве первого аргумента метода экземпляра объекта.

Всегда используйте cls в качестве первого аргумента метода класса.

Если имя аргумента конфликтует с зарезервированным ключевым словом python, обычно лучше добавить в конец имени символ подчеркивания, чем исказить написание слова или использовать аббревиатуру. Таким образом, class_ лучше, чем clss. (Возможно, хорошим вариантом будет подобрать синоним).

Имена методов и переменных экземпляров классов

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

Используйте один символ подчёркивания перед именем для непубличных методов и атрибутов.

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

Python искажает эти имена: если класс Foo имеет атрибут с именем __a, он не может быть доступен как Foo.__a. (Настойчивый пользователь все еще может получить доступ, вызвав Foo._Foo__a.) Вообще, два ведущих подчеркивания должны использоваться только для того, чтобы избежать конфликтов имен с атрибутами классов, предназначенных для наследования.

Примечание: есть некоторые разногласия по поводу использования __ имена (см. ниже).

Константы

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

Проектирование наследования

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

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

Мы не используем термин «приватный атрибут», потому что на самом деле в python таких не бывает.

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

Теперь сформулируем рекомендации:

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

  • Если имя открытого атрибута конфликтует с ключевым словом языка, добавьте в конец имени один символ подчеркивания. Это более предпочтительно, чем аббревиатура или искажение написания (однако, у этого правила есть исключение — аргумента, который означает класс, и особенно первый аргумент метода класса (class method) должен иметь имя cls).

  • Назовите простые публичные атрибуты понятными именами и не пишите сложные методы доступа и изменения (accessor/mutator, get/set, — прим. перев.) Помните, что в python очень легко добавить их потом, если потребуется. В этом случае используйте свойства (properties), чтобы скрыть функциональную реализацию за синтаксисом доступа к атрибутам.

    Примечание 1: Свойства (properties) работают только в классах нового стиля (в Python 3 все классы являются таковыми).

    Примечание 2: Постарайтесь избавиться от побочных эффектов, связанным с функциональным поведением; впрочем, такие вещи, как кэширование, вполне допустимы.

    Примечание 3: Избегайте использования вычислительно затратных операций, потому что из-за записи с помощью атрибутов создается впечатление, что доступ происходит (относительно) быстро.

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

    Примечание 1: Будьте внимательны: если подкласс будет иметь то же имя класса и имя атрибута, то вновь возникнет конфликт имен.

    Примечание 2: Механизм изменения имен может затруднить отладку или работу с __getattr__(), однако он хорошо документирован и легко реализуется вручную.

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

Последние комментарии — Python 3

  • Что нужно знать при выборе хостинга? | Валерий
    2020-09-04 13:18:45

    Спасибо за полезную информацию! Прочитал Вашу другую статью, о Хвостинге и думаю к ним переехать, уж очень привлекательные у них цены на хостинг. Но на сайте не нашел информации об их техподдержке, они вообще администрируют сайты клиентов или это необходимо покупать отдельно? Сейчас размещаюсь на https://hyperhost.ua/, у них техподдержка включена в стоимость, но и стоимость от этого выше. Хотелось бы минимизировать расходы, поэтому и смотрю в сторону Хвостинга.

  • Интерактивный режим | Татьяна
    2020-08-18 14:25:49

    Здравствуйте, а не подскажите как запускать в интерактивном режиме целый скрипт?

    То есть, существует файл hello.py

    И нужно его запустить в интерактивном режиме.

    после входа в интерактивный режим, если набрать просто hello.py, то выдает ошибку

    Traceback (most recent call last):

    File «», line 1, in

    NameError: name ‘synthesize’ is not defined

    Если набрать python synthesize.py

    то

    File «», line 1

    python synthesize.py

    ^

    SyntaxError: invalid syntax

    Вообще не понимаю что делать

    Можете подсказать пожалуйста

  • 6 примеров сортировки в Python с помощью функции sorted | deepstyle
    2020-08-14 14:48:46

    Официальное howto по сортировке в python на русском языке

    https://digitology.tech/docs/python_3/howto/sorting.html

  • Распаковка последовательности в отдельные переменные | Сергей
    2020-08-13 13:25:43

    Продажей ссылок только убить сайт

  • Диалоги в PyQt5 [Урок №6] | Вадим
    2020-08-02 22:36:24

    def showDialog(self):

    fname, ok = QFileDialog.getOpenFileName(self, ‘Open file’, ‘/home’)

    if ok:

    f = open(fname, ‘r’)

    with f:

    data = f.read()

    self.textEdit.setText(data)

  • Форум вебмастеров и SEO оптимизаторов | ohugij
    2020-07-25 19:56:47

    New search engine. — 1000 000$

  • Отличия онлайн развлечений от игры в наземном казино | asimo
    2020-07-17 00:53:59

    Ребята, не играйте в азартные игры на сайтах, которые не знаете. Вот эти ребята online-gamer.club пишут о сайтах, которые дают такую возможность.

  • Как создавать сайты в Python? | Капитан очевидность
    2020-06-17 17:23:37

    Исчерпывающий ответ на обозначенную тему «Создание сайтов Django»… Все кто её прочитал теперь имеют практический опыт Python+Django. А почему эта исчерпывающая статья бесплатна. За такие «сакральные» знания надо денех брать… Да побольше, побольше кэп!

  • Как воспроизвести аудио (.mp3) на Python | Андрей
    2020-06-15 14:19:41

    Первый метод будет работать так

    import time

    from pygame import mixer # Load the popular external library

    mixer.init()

    mixer.music.load(‘music.mp3’)

    mixer.music.play()

    time.sleep(5)

    поток не должен завершаться до окончания проигрывания

  • Преимущества ранних и поздних ставок в БК ВулканБет | Пашка
    2020-06-10 19:25:46

    [url=https://hawkbets.com/ru/posts/cyber-legacy-взяла-shachlo-на-замену]то ставки [/url]

  • Python Комментарии

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

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

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

    Комментарий Python начинается со знака решетки или решетки (#) и продолжается до конца строки. Важно отметить, что интерпретатор Python игнорирует комментарии при интерпретации кода.

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

    Комментарии блока Python

    Вы используете комментарий блока, чтобы объяснить следующий за ним код.Комментарий блока имеет отступ на том же уровне, что и блок кода. Чтобы написать комментарий блока, вы начинаете с одного знака решетки (#), за которым следует один пробел и комментарий.

    В следующем коде показано, как создать блок:

    # увеличить цену до 5%

    price = price * 1.05

    Встроенные комментарии Python

    Если комментарий помещен в то же строка как утверждение, это называется встроенным комментарием. Подобно блочному комментарию, встроенный комментарий начинается с одного знака решетки (#), за которым следует пробел и комментарий.

    Рекомендуется, чтобы встроенный комментарий отделялся от оператора как минимум двумя пробелами. В следующем примере демонстрируется встроенный комментарий.

    salary = salary * 1.02 # увеличить зарплату на 2% для сотрудника

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

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

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

    Python предоставляет два вида строк документации: однострочные и многострочные.

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

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

    В следующем примере показана однострочная строка документации в функции quicksort () :

    def quicksort ():

    «» «сортировать список с помощью алгоритма быстрой сортировки» «»

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

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

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

    def Increase_salary (sal, рейтинг, процент):

    «» «увеличить базу заработной платы на основе рейтинга и процента

    рейтинг 1-2 без увеличения

    рейтинг 3–4 повышение 5%

    рейтинг 4–6 повышение 10%

    «» «

    Многострочные комментарии Python

    Python не поддерживает многострочные комментарии, такие как C / C ++ или Java.Однако ничто не мешает вам использовать многострочные строки документации в качестве многострочных комментариев. Об этом также упоминает Гвидо ван Россум, создатель Python.

    Важно, чтобы ваши комментарии были четкими, краткими и пояснительными. Конечная цель — сэкономить время и энергию для разработчиков, которые будут работать над кодом.

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

    • Было ли это руководство полезным?
    • Да Нет
    .Руководство по комментариям

    Python — многострочные комментарии, лучшие практики

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


    Как писать комментарии в Python?

    • Комментарии Python начинаются с символа # и продолжаются до конца строки.
    • Мы можем начать комментарий с начала строки после нескольких пробелов или кода.
    • Если символ решетки присутствует в строковом литерале, он является частью строки.

    Python Комментарии Примеры

    name = "Pankaj" # имя сотрудника
    id = 100 # идентификатор сотрудника
    
    data = "# 123" # это комментарий, данные содержат # и не являются частью комментария.
     
    # Эта функция складывает два числа
    def add (x, y):
        вернуть x + y
     
    Комментарии Python
    # Этот класс предоставляет служебные функции для работы со строками
    класс StringUtils:
    
        def reverse (s):
            возвращение ''.присоединиться (обратное (s))
     

    Python Многострочный комментарий

    Иногда невозможно разместить комментарий в одной строке. В этом случае вы можете разбить комментарий на несколько строк. Для написания многострочного комментария необходимо ставить перед каждой строкой решётку (#).

    # Этот класс предоставляет служебные функции для работы со строками
    # 1. reverse (s): возвращает обратную сторону входной строки
    # 2. print (s): печатает строковое представление входного объекта
    класс StringUtils:
    
        def reverse (s):
            возвращение ''.присоединиться (обратное (s))
        
        def print (s):
            печать (и)
     
    Многострочный комментарий Python

    Использование строки документации Python как многострочного комментария

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

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

    Давайте кратко рассмотрим несколько примеров строк документации Python.

    def foo ():
        "" "Необходимо реализовать функцию foo ().В настоящее время эта функция ничего не делает. "" "
        проходить
    
    
    Данные класса:
        "" "Этот класс используется для хранения информации об объектах данных." ""
     

    Мы можем получить доступ к строке документации объекта, используя атрибут __doc__ .

    печать (foo .__ doc__)
    печать (Data .__ doc__)
     
    Строки документации Python

    Можно ли использовать строку документа для указания длинных многострочных комментариев?

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


    Многострочная строка Python как многострочные комментарии

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

    '' '
    Эта функция считывает данные сотрудников из базы данных
    emp_id: идентификатор сотрудника, должен быть int
    возвращает объект сотрудника.
    '' '
    def read_emp_from_db (emp_id):
        я = int (emp_id)
        '' 'код для чтения данных emp
        используя уникальный идентификационный номер сотрудника '' '
        проходить
     

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


    Python Комментируя передовые методы

    • Всегда предоставляйте содержательные комментарии, чтобы указать использование объекта.
    • Длинный комментарий лучше разбить на несколько строк.
    • Не грубите в комментариях.
    • Оставляйте комментарии по существу. Никто не хочет читать роман в комментариях к коду.
    • Избегайте бесполезных комментариев, не содержащих полезной информации. Ниже приведены несколько примеров бесполезных комментариев.
    # считать переменную
    count = 10
    
    # функция foo ()
    def foo ():
        проходить
     
    • Иногда в комментариях нет необходимости. Достаточно иметь собственное имя самой сущности. Давайте посмотрим на пример этого сценария.
    # Эта функция складывает два числа
    def foo (x, y):
        вернуть x + y
    
    
    # Лучше иметь функцию, определенную ниже.В комментариях нет смысла.
    
    def add_two_numbers (x, y):
        вернуть x + y
     
    • Всегда полезно иметь систему комментирования. При работе с большим количеством членов команды и несколькими проектами в организации рекомендуется использовать политику комментирования. Например, вы можете определить политику комментирования следующим образом:
    # {Тип объекта} - {Использование}
    # Data Object - хранит данные, полученные из базы данных
    data_obj = Данные ()
    
    
    # {Краткое описание функции}
    # {Входные аргументы и их типы}
    # {Вернуть сведения об объекте}
    # {Сведения об исключении}
    
    # Эта функция добавляет все элементы в последовательности или итерируемой
    # числа: последовательность или повторение, все элементы должны быть числами
    # Возвращает сумму всех чисел в последовательности или итерируемом
    # Выдает ArithmeticError, если какой-либо элемент не является числом
    
    
    def add_numbers (числа):
        sum_numbers = 0
        для числа в числах:
            сумма_числов + = число
        вернуть sum_numbers
     

    Заключение

    • Система комментариев Python проста и всегда начинается с символа #.
    • Строка документации Python предназначена для документации. Не используйте его для многострочных комментариев.
    • Начинайте каждую строку с символа решетки для многострочных комментариев.
    • Следуйте рекомендациям по добавлению комментариев в программу.
    • Наличие политики комментирования всегда является хорошей идеей при работе с большим количеством членов команды.

    Артикул:

    .

    Полное руководство — Настоящий Python

    Добро пожаловать в ваше полное руководство по документированию кода Python. Если вы документируете небольшой сценарий или большой проект, новичок вы или опытный Pythonista, это руководство расскажет обо всем, что вам нужно знать.

    Мы разбили это руководство на четыре основных раздела:

    1. Почему так важно документировать код: Введение в документацию и ее важность
    2. Комментирование и документирование Код: Обзор основных различий между комментированием и документированием, а также подходящее время и способы использования комментирования.
    3. Документирование вашей базы кода Python с помощью строк документации: Подробное описание строк документации для классов, методов, функций, модулей, пакетов и скриптов, а также того, что должно быть найдено в каждом из них.
    4. Документирование ваших проектов Python: Необходимые элементы и то, что они должны содержать для ваших проектов Python

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

    Почему так важно документировать код

    Надеюсь, если вы читаете это руководство, вы уже знаете, как важно документировать свой код. Но если нет, то позвольте мне процитировать то, что Гвидо сказал мне на недавнем PyCon:

    «Код чаще читают, чем пишут».

    Гвидо ван Россум

    Когда вы пишете код, вы пишете его для двух основных аудиторий: ваших пользователей и ваших разработчиков (включая вас самих).Обе аудитории одинаково важны. Если вы похожи на меня, вы, вероятно, открыли старые кодовые базы и задались вопросом: «О чем, черт возьми, я думал?» Если у вас возникли проблемы с чтением собственного кода, представьте, что испытывают ваши пользователи или другие разработчики, когда они пытаются использовать или внести свой вклад в ваш код.

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

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

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

    Даниэле Прочида

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

    .

    4. Дополнительные инструменты управления потоком — документация Python 3.8.6

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

    4.1. if Выписки

    Возможно, наиболее известным типом операторов является оператор if . За пример:

     >>> x = int (input ("Пожалуйста, введите целое число:"))
    Введите целое число: 42
    >>> если x <0:
    ... x = 0
    ... print ('Отрицательное значение заменено на ноль')
    ... elif x == 0:
    ... print ('Ноль')
    ... elif x == 1:
    ... print ('Один')
    ... еще:
    ... print ('Подробнее')
    ...
    Больше
     

    Может быть ноль или более частей elif , а часть else необязательный. Ключевое слово « elif » является сокращением от «else if» и полезно чтобы избежать чрезмерного вдавливания. , если elif elif … последовательность заменяет переключатель или case операторов на других языках.

    4.2. за Выписки

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

     >>> # Измерьте несколько строк:
    ... words = ['кошка', 'окно', 'defenestrate']
    >>> вместо w прописью:
    ... print (w, len (w))
    ...
    кошка 3
    окно 6
    дефенестрат 12
     

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

     # Стратегия: итерация по копии
    для пользователя статус в users.copy (). items ():
        если статус == 'неактивен':
            del users [пользователь]
    
    # Стратегия: Создать новую коллекцию
    active_users = {}
    для пользователя статус в пользователях.Предметы():
        если status == 'active':
            active_users [пользователь] = статус
     

    4.3. Диапазон () Функция

    Если вам нужно перебрать последовательность чисел, встроенная функция range () пригодится. Он генерирует арифметические прогрессии:

     >>> для i в диапазоне (5):
    ... печать (я)
    ...
    0
    1
    2
    3
    4
     

    Данная конечная точка никогда не является частью сгенерированной последовательности; диапазон (10) генерирует 10 значений, правовые индексы для элементов последовательности длиной 10.Это можно позволить диапазону начинаться с другого числа или указать другое приращение (даже отрицательное; иногда это называется «шагом»):

     диапазон (5, 10)
       5, 6, 7, 8, 9
    
    диапазон (0, 10, 3)
       0, 3, 6, 9
    
    диапазон (-10, -100, -30)
      -10, -40, -70
     

    Для перебора индексов последовательности можно объединить range () и len () следующим образом:

     >>> a = ['Мария', 'была', 'а', 'маленькая', 'барашка']
    >>> для i в диапазоне (len (a)):
    ... print (i, a [i])
    ...
    0 Мэри
    1 имел
    2 а
    3 маленькие
    4 баранины
     

    Однако в большинстве таких случаев удобно использовать enumerate () . , см. Методы зацикливания.

    Странная вещь происходит, если вы просто печатаете диапазон:

     >>> печать (диапазон (10))
    диапазон (0, 10)
     

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

    Мы говорим, что такой объект является итеративным, то есть подходит в качестве цели для функции и конструкции, которые ожидают чего-то, от чего они могут приобретайте последовательные предметы, пока не закончится запас. Мы видели это оператор for является такой конструкцией, а пример функции который требует итерации - sum () :

     >>> сумма (диапазон (4)) # 0 + 1 + 2 + 3
    6
     

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

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Theme: Overlay by Kaira Extra Text
    Cape Town, South Africa