PEP8, правила составления идеального кода для начинающих
Python, подобно живому организму, развивается и приобретает новые возможности благодаря многочисленному международному сообществу согласно определенным правилам и стандартам PEP. PEP – Python Enhancement Proposal, предложения по развитию Python. Эти стандарты позволяют создавать унифицированную проектную документацию для новых утвержденных возможностей языка Python. Самый известный PEP имеет восьмой порядковый номер. PEP8 содержит перечень принципов написания красивого и лаконичного программного кода на языке Python.
Под названием каждого подраздела главы будет находиться по одному из 19 принципов философии Python (Zen of Python). Попытайтесь «прочувствовать» то, что имел в виду автор. Также, если хочется, вместо русской адаптации этих постулатов, увидеть оригинальный текст Тима Петерса, можно запустив вот такую программу.
import this
Для чего придуман PEP8?
(Читаемость имеет значение)
PEP8 существует, чтобы улучшить “читабельность„ кода. Но почему этот параметр имеет настолько большую важность? Почему написание хорошо читаемого кода – один из фундаментальных принципов языка Python?
Как сказал создатель Python, Гвидо Ван Россум: «Код читается гораздо чаще, чем пишется». Вы можете провести несколько минут, или весь день, в процессе написания куска кода для, к примеру, аутентификации пользователя. Написав его, однажды, вы не будете писать его еще раз. Но вы точно вернетесь, чтобы прочитать его еще и еще раз. Эта часть кода может быть частью проекта, над которым вы работаете. Каждый раз, возвращаясь к этому файлу, придется вспомнить, что этот код делает и почему вы написали это именно так.
Если вы начинающий программист Python, вам может быть тяжело запомнить, что делает определенная часть кода по прошествии нескольких дней после ее написания. Однако, если вы будете следовать рекомендациям PEP8, можете быть уверены, ваш код будет в полном порядке. Вы будете знать, что добавили достаточно пробелов, в соответствии с разделением на логические блоки кода.
Соблюдение PEP8 особенно важно, если вы в поисках вакансии python-разработчика. Чистый и читаемый код показывает высокий профессионализм. Он говорит работодателю о вашем понимании правильного структурирования программного кода.
Если же вы более опытный Python-программист, тогда с помощи PEP8 можно с легкостью объединиться с другими программистами для работы над одной задачей. Хорошо читаемый код имеет в данном случае особую критичность. Люди, ранее не видевшие вас, но знакомые с вашим кодом, будут читать, понимая идею, которую вы хотели донести.
Негласная договоренность об именах
(Явное лучше, чем неявное)
При написании Python кода, необходимо придумывать имена многим вещам: переменным, функциям, классам, пакетам и так далее. Выбор разумных имен сэкономит вам время и силы в последствии. По названию нужно суметь понять, что представляет собой определенная переменная, функция или класс. Вы также избежите использования некорректных имен, которые могут привести к критическим ошибкам, плохо поддающимся отладке.
Не использовать одиночные буквы l, O, или I в качестве каких‑либо имен из‑за риска спутать их с 1 и 0, в зависимости от шрифта.
O = 2 # Это может выглядеть так, будто вы хотите приравнять 2 к нулю.
Стили именования
В таблице ниже описаны некоторые из распространенных стилей именования в коде Python и указаны случаи, когда их следует использовать:
Тип | Соглашение об именовании | Примеры |
---|---|---|
Функции | Используйте слово или слова в нижнем регистре. Для удобства чтения разделяйте слова подчеркиванием. | function, my_function |
Переменные | Используйте одну строчную букву, слово или слова. Для удобства чтения разделяйте слова подчеркиванием. | x, var, my_variable |
Классы | Каждое слово начинайте с заглавной буквы. Не разделяйте слова подчеркиванием. Этот стиль называется «дело верблюда». | Model, MyClass |
Методы | Используйте слово или слова в нижнем регистре. Для удобства чтения разделяйте слова подчеркиванием. | class_method, method |
Константы | Используйте одну заглавную букву, слово или слова. Для удобства чтения разделяйте слова подчеркиванием. | CONSTANT, MY_CONSTANT, MY_LONG_CONSTANT |
Модули | Используйте короткие слова или слова в нижнем регистре. Для удобства чтения разделяйте слова подчеркиванием. | module.py, my_module.py |
Пакеты | Используйте короткие слова или слова в нижнем регистре. Не разделяйте слова подчеркиванием. | package, mypackage |
Помимо выбора правильных стилей именования в вашем коде, вы также должны тщательно выбирать сами имена. Ниже приведены несколько советов, как сделать это максимально эффективно.
Правильный выбор имени
Выбор имен для переменных, функций, классов и т. д. может оказаться неожиданно сложной задачей. При написании кода вы должны хорошо продумать свой выбор имен, так как это сделает ваш код более читаемым. Лучший способ назвать ваши объекты в Python — использовать описательные имена, чтобы было понятно, что представляет собой объект.
При именовании переменных у вас может возникнуть соблазн выбрать простые, состоящие из одной буквы имена в нижнем регистре, например x. Но если вы не используете x в качестве аргумента математической функции, непонятно, что представляет собой этот самый x. Представьте, что вы храните имя человека в виде строки и хотите использовать срез строки, чтобы по‑другому отформатировать его имя.
Вы можете получить что‑то вроде этого:
# Не рекомендуется x = 'Иван Петров' y, z = x.split()
Это будет работать, но вам нужно будет отслеживать, что представляют собой x, y и z. Это также может сбивать с толку соавторов. Более правильный выбор имен будет примерно таким:
# Рекомендуется name = 'Иван Петров' first_name, last_name = name.split()
Точно так же, чтобы уменьшить количество набираемых вами букв, может возникнуть соблазн использовать сокращения при выборе имен. В приведенном ниже примере была определена функция
# Не рекомендуется def db(x): return x * 2
На первый взгляд, это может показаться очевидным выбором — это ведь отличное сокращением для double! Но представьте, что вернетесь к этому коду через несколько дней. Скорее всего, вы забудете, какой смысл вкладывали в эту функцию и вполне можете подумать, что это сокращение от database.
Следующий пример еще более понятен:
# Рекомендуется def multiply_by_two(x): return x * 2
Та же самая философия относится и ко всем прочим типам данных и объектов в Python. Всегда пробуйте использовать наиболее емкие и лаконичные названия.
Расположение кода
(Красивое лучше, чем уродливое)
То, как Вы расположите ваш код, имеет огромную роль в повышении его читаемость. В этом разделе вы узнаете, как добавить вертикальные пробелы для улучшения восприятия вашего кода.
Вы также узнаете, как правильно пользоваться ограничением в 79 символов на строку, рекомендованным в PEP8.Монолитный код может быть труден для восприятия. Точно так же, слишком много пустых строк в коде делает его очень разреженным, что заставит читателя пролистывать его чаще, чем необходимо. Ниже приведены три основных правила использования вертикальных пробелов.
Окружите функции и классы верхнего уровня двумя пустыми строками. Функции и классы верхнего уровня должны быть самодостаточны и обрабатывать отдельные функции. Имеет смысл разместить вокруг них дополнительное вертикальное пространство, чтобы было ясно, что они разделены:
class MyFirstClass: pass class MySecondClass: pass def top_level_function(): return None
Обособьте определения методов внутри классов одной пустой строкой. Внутри класса все функции связаны друг с другом. Рекомендуется оставлять между ними только одну строку:
class MyClass: def first_method(self): return None def second_method(self): return None
Используйте пустые строки внутри функций, чтобы четко показать шаги. Иногда сложная функция должна выполнить несколько шагов перед оператором return. Чтобы помочь читателю понять логику внутри функции, может быть полезно оставлять пустую строку между каждым шагом.
В приведенном ниже примере есть функция для вычисления дисперсии списка. Это двухэтапная задача, поэтому логично будет отделить каждый шаг, оставив между ними пустую строку. Перед оператором возврата также есть пустая строка. Это помогает читателю ясно увидеть, что возвращается:
def calculate_variance(number_list): sum_list = 0 for number in number_list: sum_list = sum_list + number mean = sum_list / len(number_list) sum_squares = 0 for number in number_list: sum_squares = sum_squares + number**2 mean_squares = sum_squares / len(number_list) return mean_squares - mean**2
Если вы правильно используете вертикальные пробелы, это может значительно улучшить читаемость вашего кода и помочь читателю визуально понять, что этот код делает.
Максимальная длина строки и разрыв строки
PEP8 предлагает ограничить длину строки 79 символами. Это рекомендуется делать, чтобы вы имели возможность открывать несколько файлов рядом друг с другом, а также избегать переноса строк.
Конечно, не всегда возможно обеспечить длины всех операторов до 79 символов. PEP8 также описывает способы, позволяющие операторам занимать несколько строк. Python предполагает наличие продолжения строки, если код заключен в круглые, квадратные или фигурные скобки:
def function(arg_one, arg_two, arg_three, arg_four): return arg_one
Если продолжение строки использовать не представляется возможным, можно также использовать обратную косую черту для разрыва строки:
from mypkg import example1, \ example2, example3
Важно: если разрыв строки должен произойти вокруг бинарных операторов, таких как сложение или, например, умножение, он должен находиться перед оператором.
Отступы
(Должен быть один очевидный способ сделать это)
Отступы или же пробелы в начале строки — крайне важная часть в синтаксисе Python. Как группируются операторы друг с другом операторы, в Python определяют именно уровни строк.
x = 2 if x > 6: print('x больше, чем 6')
Отступ перед оператором вывода дает сигнал Python об условном выполнении только в случае, когда оператор if
возвращает True. Ровно такой же отступ покажет Python, какой именно код выполнять при вызове функции или какой код имеет отношение к данному классу. Ключевых правил расстановки отступов всего два и они ниже:Используйте четыре последовательных пробела для отступа;
Отдавайте предпочтение пробелам, а не табуляции.
Пробелы против Табуляции
Вы можете настроить ваш редактор кода на вставку четырех пробелов, когда вы нажимаете клавишу Tab. Также необходимо иметь в виду, что в Python 3 запрещено смешение пробелов и табуляции. Изначально выберите, как именно вы будете выставлять отступы и придерживайтесь этого выбора. Иначе, вместо выполнения кода, вы получите ошибку.
Комментарии
(Если реализацию трудно объяснить, это была плохая идея)
Используйте комментарии для документирования кода в том виде, в каком он написан. Это важно для ваших коллег и вашего понимания своего кода в будущем. Вот три важных ключевых момента, которые необходимо учитывать, при добавлении комментариев к коду:
Используйте длину комментариев при документации не более 72 символов;
Не используйте сокращения, начинайте предложения с заглавной буквы;
Не забывайте актуализировать комментарии, при изменении кода.
Пример простейшего комментария:
name = 'John Smith' # Student Name
Пробелы в выражениях и утверждениях
(Разреженное лучше, чем плотное)
Полезность пробелов в выражениях и операторах трудно переоценить. Если пробелов недостаточно, код может быть трудночитаемым, так как все сгруппированы вместе. Если пробелов слишком много, может быть сложно визуально объединить строки кода в, логически связанные, блоки.
Окружите следующие бинарные операторы одним пробелом с каждой стороны:
Операторы присвоения ( =, +=, -= и т. п.)
Сравнения ( ==, !=, >, <. >=, <= ) и (is, is not, in, not in)
Логические (and, or, not)
Когда = используется для присвоения значения для аргумента функции, не окружайте его пробелами.
Рекомендации программисту
(Простое лучше сложного)
Необходимо заметить, что в Python можно придумать несколько способов для выполнения одного и того же действия. Далее будет рассказано, как избавляться от двусмысленности при сохранении последовательности.
# Не рекомендуется my_bool = 4 > 3 if my_bool == True: return '4 больше 3'
Использование оператора эквивалентности здесь не имеет необходимости, my_bool может иметь только два значения, True или False. Поэтому достаточно написать так:
# Рекомендуется if my_bool: return '4 is bigger than 3'
Этот способ выполнения оператора if с логическим оператором проще и требует меньше кода, поэтому PEP8 рекомендует именно его.
Когда лучше проигнорировать PEP8
Однозначно ответить на этот вопрос довольно сложно. Если вы безукоризненно исполняете все предписания PEP8, можно с уверенностью гарантировать «чистоту», высокий уровень читаемости кода и профессионализм программиста. Что принесет пользу всем взаимодействующим с вашим кодом, от коллег до конечного заказчика продукта. Но все же некоторые рекомендации PEP8 неприменимы в следующих случаях:
Если соблюдение PEP8 нарушит совместимость с существующим программным обеспечением;
Если код, сопутствующий тому, над чем вы работаете, несовместим с PEP8;
Если код нужно оставить совместимым с неактуальными версиями Python.
Заключение
Теперь вам должно стать понятны способы создания высококачественного, читаемого кода Python, с помощью рекомендаций PEP8. Хотя они могут показаться тюрьмой для мозга творца, их соблюдение действительно может «прокачать» ваш код, в частности, когда речь заходит о разделении работы над ним с соавторами.
Если же у вас имеется желание углубиться в изучение тонкостей PEP8, можно ознакомиться с полной англоязычной документацией или посетить информационный ресурс pep8.org, содержащий ту же информацию, в более структурированном виде. В этих документах вы найдете, не попавшие в эту «выжимку», рекомендации.
дальше
что это такое и как применять
PEP 8, иногда обозначаемый PEP8 или PEP-8, представляет собой документ, содержащий рекомендации по написанию кода на Python. Он был составлен в 2001 году Гвидо ван Россумом, Барри Варшавой и Ником Когланом. Основная цель PEP 8 – улучшить читабельность и логичность кода на Python.
PEP расшифровывается как Python Enhancement Proposal («Предложение по усовершенствованию Python»), и их несколько. PEP — это документ для сообщества, который описывает новые функции, предлагаемые для Python, и содержит такие аспекты языка, как дизайн и стиль.
В цикле из трех статей мы разберем основные принципы, изложенные в PEP 8. Эти статьи предназначены для новичков и программистов среднего уровня, поэтому мы не будем затрагивать некоторые из наиболее сложных тем. Вы можете изучить их самостоятельно, прочитав полную документацию по PEP 8 .
Из данной серии статей вы узнаете:- как писать Python-код, соответствующий PEP8;
- какие доводы лежат в основе рекомендаций, изложенных в PEP8;
- как настроить среду разработки так, чтобы вы могли начать писать код на Python по PEP8.
“Читаемость имеет значение”, — Дзен Python
PEP 8 существует для улучшения читаемости кода Python. Но почему так важна удобочитаемость? Почему написание читаемого кода является одним из руководящих принципов языка Python?
Как сказал Гвидо ван Россум: «Код читают гораздо чаще, чем пишут». Вы можете потратить несколько минут или целый день на написание фрагмента кода для аутентификации пользователя. В дальнейшем вам не придётся его писать. Но перечитывать его вы точно будете. Этот фрагмент кода может остаться частью проекта, над которым вы работаете. Каждый раз, возвращаясь к этому файлу, вам нужно будет вспомнить, что делает этот код и зачем вы его написали. Поэтому удобочитаемость имеет большое значение.
Если вы новичок в Python, возможно, вам уже через несколько дней или недель будет трудно вспомнить, что делает фрагмент кода. Но если вы следуете PEP 8, вы можете быть уверены, что правильно назвали свои переменные . Вы будете знать, что добавили достаточно пробелов, чтобы обособить логические шаги. Вы также снабдили свой код отличными комментариями. Все это сделает ваш код будет более читабельным, а значит, к нему будет легче вернуться. Следование правилам PEP 8 для новичка может сделать изучение Python гораздо более приятной задачей.
Следование PEP 8 особенно важно, если вы претендуете на должность разработчика. Написание понятного, читаемого кода свидетельствует о профессионализме. Это скажет работодателю, что вы понимаете, как правильно структурировать свой код.
Работая над проектами, вам, скорее всего, придется сотрудничать с другими программистами. Здесь, опять же, очень важно писать читаемый код. Другие люди, которые, возможно, никогда раньше не встречали вас и не видели ваш стиль программирования, должны будут прочитать и понять ваш код. Наличие руководящих принципов, которым вы следуете и которые знаете, облегчит другим чтение вашего кода.
[python_ad_block]
Когда стоит игнорировать PEP 8
Краткий ответ на этот вопрос – никогда. Если вы строго следуете PEP 8, то можете гарантировать, что у вас будет чистый, профессиональный и читабельный код. Это принесет пользу вам, а также сотрудникам и потенциальным работодателям.
Однако некоторые рекомендации в PEP 8 неудобны в следующих случаях:
- соблюдение PEP 8 нарушает совместимость с существующим программным обеспечением
- код, связанный с тем, над чем вы работаете, несовместим с PEP 8
- код должен оставаться совместимым со старыми версиями Python
Как проверить соответствие кода PEP 8
Чтобы убедиться, что ваш код соответствует PEP 8, необходимо многое проверить. Помнить все эти правила при разработке кода может быть непросто. Особенно много времени уходит на приведение прошлых проектов к стандарту PEP 8. К счастью, есть инструменты, которые помогут ускорить этот процесс.
Существует два класса инструментов, которые можно использовать для обеспечения соответствия PEP 8: линтеры и автоформаттеры.
ЛинтерыЛинтеры – это программы, которые анализируют код, помечают ошибки и предлагают способы их исправления. Они особенно полезны как расширения редактора, поскольку выявляют ошибки и стилистические проблемы во время написания кода.
Вот пара лучших линтеров для кода на Python:
pycodestyleЭто инструмент для проверки вашего кода на соответствие некоторым стилевым соглашениям в PEP8.
Установите pycodestyle с помощью pip:
$ pip install pycodestyle
Вы можете запустить pycodestyle из терминала, используя следующую команду:
$ pycodestyle code. py
Результат:
code.py:1:17: E231 missing whitespace after ',' code.py:2:21: E231 missing whitespace after ',' code.py:6:19: E711 comparison to None should be 'if cond is None:'flake8
Это инструмент, который сочетает в себе отладчик, pyflakes и pycodestyle.
Установите flake8 с помощью pip:
$ pip install flake8
Запустите flake8 из терминала, используя следующую команду:
$ flake8 code. py
Пример вывода:
code.py:1:17: E231 missing whitespace after ',' code.py:2:21: E231 missing whitespace after ',' code.py:3:17: E999 SyntaxError: invalid syntax code.py:6:19: E711 comparison to None should be 'if cond is None:'
Замечание: Дополнительная строка в выводе указывает на синтаксическую ошибку.
Также доступны расширения для Atom, Sublime Text, Visual Studio Code и VIM.
От редакции Pythonist. Рекомендуем статью «Качество кода на Python: сравнение линтеров и советы по их применению».
АвтоформаттерыАвтоформаттеры – это программы, которые автоматически реорганизуют ваш код для соответствия PEP 8. Одна из таких программ — black
. Она автоматически форматирует код для приведения его в соответствие с большинством правил PEP 8. Единственное, она ограничивает длину строки до 88 символов, а не до 79, как рекомендовано стандартом. Однако вы можете изменить это, добавив флаг командной строки, как в примере ниже.
Установите black с помощью pip. Для запуска требуется Python 3.6+:
$ pip install black
Его можно запустить из командной строки, как и в случае с линтерами. Допустим, вы начали со следующего кода, который не соответствует PEP 8, в файле с именем code.py:
for i in range(0,3): for j in range(0,3): if (i==2): print(i,j)
Затем вы можете запустить следующую команду через командную строку:
$ black code. py reformatted code.py All done! ✨ ? ✨
code.py будет автоматически приведён к следующему виду:
for i in range(0, 3): for j in range(0, 3): if i == 2: print(i, j)
Если вы хотите изменить ограничение длины строки, можно использовать флаг --line-length
:
$ black --line-length=79 code.py reformatted code.py All done! ✨ ? ✨
Работа двух других автоформаттеров – autopep8 и yapf – аналогична работе black .
О том, как использовать эти инструменты, хорошо написано в статье Python Code Quality: Tools & Best Practices Александра ван Тол.
Перевод части статьи How to Write Beautiful Python Code With PEP 8.
В следующих статьях цикла про PEP 8 читайте:
- Нейминг и размещение кода
- Комментарии, пробелы, выбор методов
7 библиотек Python для более удобного в сопровождении кода
Удобочитаемость имеет значение.
— Дзен Питона, Тим Питерс
Легко упустить из виду стандарты удобочитаемости и кодирования, когда программный проект переходит в «режим обслуживания». (Во-первых, также легко никогда не устанавливать эти стандарты.) Но поддержание согласованного стиля и стандартов тестирования в кодовой базе является важной частью снижения нагрузки на обслуживание, гарантируя, что будущие разработчики смогут быстро понять, что происходит в новой среде. для них и поддерживать работоспособность приложения с течением времени.
Отличный способ защитить будущую ремонтопригодность проекта — использовать внешние библиотеки для проверки работоспособности вашего кода. Это некоторые из наших любимых библиотек для линтинга кода (проверка на наличие ошибок PEP 8 и других стилей), обеспечения согласованности стиля и обеспечения приемлемого покрытия тестами по мере достижения проектом зрелости.
Проверьте свой стиль кода
PEP 8 — это руководство по стилю кода Python, в котором изложены правила для таких вещей, как длина строки, отступы, многострочные выражения и соглашения об именах. У вашей команды также могут быть свои собственные правила стиля, которые немного отличаются от PEP 8. Целью любого руководства по стилю кода является обеспечение соблюдения единых стандартов в кодовой базе, чтобы сделать ее более читабельной и, следовательно, более удобной в сопровождении. Вот три библиотеки, которые помогут украсить ваш код.
1. Pylint
Pylint — это библиотека, которая проверяет нарушения стиля PEP 8 и распространенные ошибки. Он хорошо интегрируется с несколькими популярными редакторами и IDE, а также может запускаться из командной строки.
Для установки запустите pip install pylint
.
Чтобы использовать Pylint из командной строки, запустите pylint [options] path/to/dir
или pylint [options] path/to/module.py
. Pylint будет выводить в консоль предупреждения о нарушениях стиля и других ошибках.
Вы можете настроить, какие ошибки проверяет Pylint, с помощью файла конфигурации с именем pylintrc
.
2. Flake8
Flake8 — это «инструмент Python, который объединяет PEP8, Pyflakes (аналог Pylint), McCabe (средство проверки сложности кода) и сторонние плагины для проверки стиля и качества некоторого кода Python».
Чтобы использовать Flake8, запустите pip install flake8
. Затем запустите flake8 [options] path/to/dir
или flake8 [options] path/to/module.py
, чтобы увидеть его ошибки и предупреждения.
Как и Pylint, Flake8 допускает некоторую настройку того, что он проверяет с помощью файла конфигурации. Он имеет очень четкую документацию, в том числе несколько полезных обработчиков коммитов для автоматической проверки вашего кода в рамках вашего рабочего процесса разработки.
Flake8 интегрируется с популярными редакторами и IDE, но эти инструкции обычно отсутствуют в документации. Чтобы интегрировать Flake8 с вашим любимым редактором или IDE, поищите плагины в Интернете (например, плагин Flake8 для Sublime Text).
3. Isort
Isort — это библиотека, которая сортирует ваши импортированные данные в алфавитном порядке и разбивает их на соответствующие разделы (например, импорт стандартной библиотеки, импорт сторонних библиотек, импорт из вашего собственного проекта и т. д.). Это повышает удобочитаемость и облегчает поиск импорта, если в вашем модуле их много.
Установите isort с помощью pip install isort
и запустите его с помощью isort path/to/module.py
. Дополнительные параметры конфигурации находятся в документации. Например, вы можете настроить, как isort обрабатывает многострочный импорт из одной библиотеки в . isort.cfg
файл.
Подобно Flake8 и Pylint, isort также предоставляет плагины, которые интегрируют его с популярными редакторами и IDE.
Отдайте свой стиль кода на аутсорсинг
Не забывайте запускать линтеры вручную из командной строки для каждого изменяемого файла, и вам может не понравиться, как конкретный плагин ведет себя с вашей IDE. Кроме того, ваши коллеги могут предпочитать другие линтеры или у них могут не быть подключаемых модулей для их любимых редакторов, или вы можете быть менее дотошны в постоянном запуске линтера и исправлении предупреждений. Со временем кодовая база, которой вы все пользуетесь, станет беспорядочной и трудной для чтения.
Отличным решением является использование библиотеки, которая автоматически переформатирует ваш код во что-то, что соответствует требованиям PEP 8. Все три библиотеки, которые мы рекомендуем, имеют разные уровни настройки и разные значения по умолчанию для форматирования кода. Некоторые из них более самоуверенны, чем другие, поэтому, как с Pylint и Flake8, вы захотите протестировать их, чтобы увидеть, какие из них предлагают настройки, без которых вы не можете жить… и неизменяемые значения по умолчанию, с которыми вы можете жить с .
4. Автопеп8
Autopep8 автоматически форматирует код в указанном вами модуле. Он изменит отступы строк, исправит отступы, удалит лишние пробелы и рефакторит распространенные ошибки сравнения (например, с логическими значениями и None
). Полный список исправлений смотрите в документации.
Для установки запустите pip install --upgrade autopep8
. Чтобы переформатировать код на месте, запустите autopep8 --in-place --aggressive --aggressive
. агрессивные флаги
(и их количество) указывают, какой уровень контроля вы хотите предоставить autopep8 над своим стилем кода. Узнайте больше об агрессивных опциях.
5. Yapf
Yapf — еще один вариант переформатирования кода, который имеет собственный список параметров конфигурации. Он отличается от autopep8 тем, что не просто устраняет нарушения PEP 8. Он также переформатирует код, который конкретно не нарушает PEP 8, но не имеет единообразного стиля или может быть отформатирован лучше для удобочитаемости.
Для установки запустите pip install yapf
. Чтобы переформатировать код, запустите yapf [options] path/to/dir
или yapf [options] path/to/module.py
. Также имеется полный список параметров настройки.
6. Черный
Черный — новинка среди линтеров, переформатирующих код на месте. Он похож на autopep8 и Yapf, но более самоуверен. У него очень мало возможностей для настройки, что, в общем-то, и важно. Идея состоит в том, что вам не нужно принимать решения о стиле кода; единственное решение, которое нужно принять, это позволить черным решить за вас. Вы можете прочитать об ограниченных возможностях настройки и инструкциях по их сохранению в файле конфигурации.
Для Black требуется Python 3.6+, но он может форматировать код Python 2. Чтобы использовать, запустите pip install black
. Чтобы улучшить свой код, запустите: black path/to/dir
или black path/to/module.py
.
Проверьте покрытие тестами
Вы пишете тесты, верно? Затем вы захотите убедиться, что новый код, зафиксированный в вашей кодовой базе, протестирован и не снижает общий объем тестового покрытия. Хотя процент покрытия тестами — не единственная метрика, которую вы должны использовать для измерения эффективности и достаточности ваших тестов, это один из способов убедиться, что в вашем проекте соблюдаются основные стандарты тестирования. Для измерения тестового покрытия у нас есть одна рекомендация: покрытие.
7. Покрытие
У покрытия есть несколько вариантов того, как оно сообщает вам о вашем тестовом покрытии, включая вывод результатов на консоль или на HTML-страницу и указание номеров строк, в которых отсутствует тестовое покрытие. Вы можете настроить файл конфигурации, чтобы указать, что проверяет покрытие, и упростить его запуск.
Для установки запустите pip install cover
. Чтобы запустить программу и увидеть ее вывод, запустите покрытие run [path/to/module.py] [args]
, и вы увидите вывод своей программы. Чтобы просмотреть отчет о том, для каких строк кода отсутствует покрытие, запустите отчет о покрытии -m
.
Инструменты непрерывной интеграции
Непрерывная интеграция (CI) — это ряд процессов, которые можно запустить для автоматической проверки ошибок линтера и минимального покрытия тестами перед слиянием и развертыванием кода. Существует множество бесплатных или платных инструментов для автоматизации этого процесса, и подробное пошаговое руководство выходит за рамки этой статьи. Но поскольку настройка процесса непрерывной интеграции является важным шагом в устранении блоков для более читаемого и удобного в сопровождении кода, вам следует изучить инструменты непрерывной интеграции в целом; проверьте Travis CI и Jenkins, в частности.
Это лишь несколько библиотек, доступных для проверки кода Python. Если у вас есть фаворит, которого нет в этом списке, поделитесь им в комментариях.
Эта работа находится под лицензией Creative Commons Attribution-Share Alike 4.0 International License.
Как обвал российского рубля может повлиять на ваш портфель
Уэйн Дагган, штатный писатель Benzinga
28 февраля 2022 г. , 11:41 | 3 min read
- Согласно FactSet, компании S&P 500 получают только около 1% своего общего дохода от России и Украины, что позволяет предположить, что индексные фонды S&P 500, такие как популярный SDPR S&P 500 ETF Trust, испытывают крайне ограниченное влияние российского конфликта.
- Инвесторы, владеющие ETF развивающихся рынков, имеют небольшое влияние на Россию.
Российский рубль торговался на отметке 119 за доллар США в понедельник утром, по сравнению с 84 за доллар в воскресенье, снижение почти на 30%. Резкое падение курса российской валюты стало ответом на негативную реакцию международного сообщества и санкции против России после ее вторжения в Украину на прошлой неделе.
Центральный банк России объявил в понедельник, что его рынки акций и деривативов останутся закрытыми в понедельник, но многие связанные с Россией акции и ETF сильно пострадали на мировых рынках в понедельник.
Ссылка по теме: Цены на газ: почему вторжение России в Украину увеличит ваши расходы на заправку
RSX и фонды SPY: Одной из самых больших жертв, по понятным причинам, стал ETF VanEck Russia ETF RSX, который упал на 22,4%. в понедельник утром. ETF RSX ориентирован именно на Россию, поэтому инвесторы должны понимать, какое влияние беспорядки в России окажут на их инвестиции. Но другие популярные ETF также имеют ограниченную долю участия в России.
По данным FactSet, компании из списка S&P 500 получают лишь около 1% своего общего дохода от России и Украины, что позволяет предположить, что индексные фонды S&P 500, такие как популярные SDPR S&P 500 ETF Trust SPY, испытывают крайне ограниченное влияние российского конфликта. Среди компаний S&P 500 Philip Morris International Inc. PM генерирует самый высокий процент выручки в России и Украине — 8%.
PepsiCo, Inc. PEP и Mohawk Industries, Inc. MHK занимают второе и третье места с доходом менее 4,5% каждый.
Другие фонды, открытые в России: Инвесторы, владеющие ETF развивающихся рынков, имеют небольшую долю в России. Около 2,7% популярных акций Vanguard FTSE Emerging Markets ETF VWO являются российскими акциями, в то время как 2% акций iShares Core MSCI Emerging Markets ETF IEMG являются российскими. Фонд WisdomTree Emerging Markets High Divided Fund DEM особенно сильно зависит от российских акций — 6,3%.
Несколько других тематических ETF имеют небольшое присутствие в России. Фонд iShares MSCI Global Metals & Mining Producers ETF PICK имеет долю участия в России в размере 2,4%. Фонд Amplify Lithium & Battery Technology ETF BATT имеет долю 2,2%.
Кроме того, несколько российских акций, которые напрямую торгуются на основных фондовых биржах США, в настоящее время остановлены, в том числе Yandex NV YNDX, QIWI PLC QIWI, Мечел ПАО MTL, Ozon Holdings PLC OZON, HeadHunter Group PLC HHR и Nexters Inc GDEV.
Мнение Бензинга: Несмотря на недавнюю волатильность на рынке США, большинство американских инвесторов крайне изолированы от прямых инвестиций в Россию или российскую экономику.