Типичные улучшения

Для поиска по тегу начните название тега с символа '@'.

Улучшения, показаны 50 из 132.

Укажите версию Python

Версия Python, на котором работает ваш проект -- это важно. Очевидно, что даже если не …

Используйте терминологию Python

В Python нет "массивов", вместо них используют "списки". То же самое со словарями: это теперь …

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

FROM python — занимает гигабайт, FROM python-slim — занимает 100 Мб

Очистите код от индексов

Обращение к данным по индексу `voice_record[1][0]` сильно осложняет код. Программисту приходится держать в голове структуру …

Распакуйте параметры функции

Функции созданы для того, чтобы ими пользоваться. А чтобы функцией пользоваться, надо выяснить какие данные …

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

FROM python — занимает гигабайт, FROM python-slim — занимает 100 Мб

Уточните название резюме

Проверьте, что у вас написано в названии резюме. Работодатель будет искать вас по названию резюме, …

Используйте встроенные возможности format

Метод format подобен швейцарскому ножу. Он решает множество задач, если уметь им пользоваться.

Разрешите конфликт имен

В Python есть названия, занятые стандартными функциями и классами — `dict`, `list`, `range`. Python разрешает …

Избавьтесь от сравнений с True/False

Следующие две конструкции делают одно и то же: ```python if value == True: ``` ```python …

Упростите создание словаря

В python есть несколько способов создания словаря. Можно сначала объявить пустой словарь, а затем наполнить …

Упростите создание списка

В python есть несколько способов создания списка. Можно сначала объявить пустой список, а затем наполнить …

Укажите related_name во множественном числе

Если `related_name` указан в единственном числе, то запросы с его участием выглядят очень странно. Проблема …

Избавьтесь от сравнений с None

В Python не принято сравниваться с `None` без особой на то необходимости. Без `None` код …

Избавьтесь от комментария с кодировкой

У второй версии Python были проблемы с поддержкой кириллицы в коде. Он считал, что код …

Используйте contextlib.suppress

Если программист хочет проигнорировать какое-нибудь исключение, то часто получается подобный код: ```python try: os.remove('somefile.tmp') except …

Сделайте поле обязательным

Записи в БД просто не имеют смысла без некоторых полей. Ниже несколько примеров таких ситуаций: …

Избавьтесь от самописных примесей (mixins)

Mixins – это худшее, что может случиться с вашим кодом. Они подрывают стабильность кода, усложняют …

Ограничьте название резюме

Проверьте, что у вас написано в названии резюме. Работодатель будет искать вас по названию резюме, …

Оберните код в ifmain / def main

Ваш файл с кодом `script.py` можно использовать двумя способами: запустить напрямую или подключить в качестве …

Уберите лишние преобразования типов

Преобразования типов бывают лишними. Посмотрите на эти строки кода: ```python text = 'Найдено {} записей'.format(str(len(records))) …

Используйте в названиях правильный регистр букв

Верхний и нижний регистр букв в названиях имеют значение. По ним программист узнает тип сущности: …

Выберите между ifmain и defmain

`def main` — это особая функция. Внутри нее держат код, который будет запущен при запуске …

Откажитесь от модификации входных аргументов

У Python есть интересная особенность — при вызове функция получает не копию аргументов, а их …

Укажите default value для аргумента функции

В Python для функции можно задать опциональный аргумент, указав для него значение по умолчанию — …

Избавьтесь от лишних update

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

Используйте raw строки для регулярок

В Python есть особый вид строк, начинающихся с символа `r` перед кавычками: `r'Строка текста'`. Их …

Закодируйте URL

В адресе URL разрешено использовать не так много символов. Пробелы, квадратные скобки, кириллица — все …

Сделайте except избирательным

Когда вы не указываете какое исключение хотите перехватить, то перехватываются все. Если в блоке кода …

Используйте None как пустое значение

В Python есть специальный объект для обозначения пустого значения — `None`. Его возвращают функции, когда …

Оформите docstrings по стандартам

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

Используйте isinstance

В Python не сравнивают типы данных напрямую. Такая конструкция мешает наращивать код: ```python if type(my_variable) …

Сделайте скрипт совместимым с *nix и Windows

В Linux и MacOs для записи путей в файлам используют символ `/`, а в Windows …

Упростите цикл while

Следующих два фрагмента кода эквивалентны: ```python while True: ... if not condition: break ``` Можно …

Сократите валидаторы с использованием any

Теперь когда вы написали валидаторы с помощью цикла `for`, у вас не составит труда использовать …

Выберите между raise_for_status и ok

Метод `response.raise_for_status()` выкидывает исключение, если срабатывает условие `not response.ok`. По этой причине нет смысла повторно …

Не переизобретайте механизм исключений

Когда-то в программах не было исключений и их код был усыпан бесконечными проверками — удачно …

Уточните название функции

Названия функций важны. Хорошее название подсказывает программисту, что делает код функции и что он вернёт …

Уточните название переменной

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

Используйте другие структуры данных Redis

Redis не только умеет хранить ключи и значения. Он также поддерживает списки и хеши — …

Вынесите вставки кода в отдельные блоки

В Markdown есть два формата для вставок кода. Первый — это inlines. Его применяют для …

Не перехватывайте исключения просто так

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

Используйте шорткат render

Вместо нескольких строчек с загрузкой шаблона и его обработкой: ```python def show_phones(request): template = loader.get_template('product_page.html') …

Не доверяйте FloatField точные вычисления

FloatField хранит данные как питоновский `float` и наследует все его проблемы. Например, вычисления с `float` …

Отключите кэш в дата-миграции

Вообще, в питоне не принято сильно заботиться о памяти. Но это до тех пор, пока …

Отформатируйте длинный QuerySet

Запросы в Django ORM бывают большими и сложными. Даже десять строк кода на один запрос …

Упакуйте настройки доступа к БД в один URL

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

Уточните название класса

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

Используйте возможности startswith

Функция `startswith` умеет работать сразу с кортежем (`tuple`) из строк. Поэтому такой код можно сильно …