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

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

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

Используйте возможности многострочной строки

Если по многострочной строке разбросаны символы переноса строки `\n`, то сложно понять как будет выглядеть …

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

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

Сделайте строку многострочной

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

Избавьтесь от устаревшего способа форматирования строк

`%s` -- это старый способ форматирования строк, наследованный ещё из второго питона. Он остаётся для …

Разбейте длинные строки на части

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

Откажитесь от unicode-строк

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

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

Шаблоны намного нагляднее — сразу видно куда и какое значение будет подставлено, легко представить себе …

Избавьтесь от сравнений с пустой строкой

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

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

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

Разбейте код по логическим блокам

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

Отделите кадры от ANSI кодов

Я предлагаю выводить каждый ANSI-код в отдельном `print`, как тут: ![](https://devman.org/filer/canonical/1611248434/28/) Если отделить ANSI-коды от …

Выберите основной вид кавычек

Язык Python поддерживает два вида символов кавычек: одинарные `'` и двойные `"`. Есть несколько условных …

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

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

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

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

Не путайте JSON и полученные оттуда данные

JSON — это текстовый формат данных, в Python он представляется в виде строки. Результат декодирования …

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

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

Добавьте защиту от ошибок в GET параметрах

В GET параметрах запроса запрещены многие символы - `&`, `?`, пробел, табуляция, кириллица. URL будет …

Поместите импорт библиотек в начало файла

Объявления всех импортов `import` принято собирать в первых строках файла с кодом. Другой программист сильно …

Спрячьте избыточные индексы

Избыточные индексы — это номера первого и последнего символа в строке. Они избыточны, потому что …

Избавьтесь от точки с запятой

В Python можно ставить символ `;` в конце строки, но в этом нет необходимости. Ставить …

Разбейте сложные выражения на части

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

Развяжите координатные оси

При считывании нажатий клавиш могут оказаться зажатыми сразу две - влево и вниз. Такое случается, …

Используйте textwrap.dedent

Чтобы multiline строки не ломали отступы в коде функций и других блоков используйте функцию `dedent` …

Используйте format_html для подстановки в HTML

Функция `format_html` в Django похожа по своим возможностям на обычное форматирование строк. Она тоже подставляет …

Используйте livereload cli

Библиотека livereload предоставляет два интерфейса. Есть обычная библиотека, её можно импортировать и вызвать одну из …

Используйте json.load

Сейчас вы считываете данные из файла строкой, а затем превращаете их в списки и словари …

Подберите точные названия

Когда код исполняет компьютер, ему не важны названия, можно хоть a,b,c,x,y использовать, он справится. Названия …

Свяжите числа с кодом

Если мы изменим числовую константу в коде, то наверняка заденем циклы, условия и значения других …

Соберите код cli в одном месте

Функции не годятся для повторного использования, если внутри них прячутся вызовы `print`, `input` или `argparse`. …

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

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

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

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

Оптимизируйте декодирование JSON

Превращение JSON строки в структуру данных Python требует много процессорного времени. Этот ресурс не безграничен, …

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

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

Сделайте ссылки в документации кликабельными

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

Вынесите настройку DEBUG

В файле settings.py есть настройка `DEBUG`, она включает отладочный режим работы сайта. На локальной машине …

Запретите null в строковых полях БД

Если в CharField разрешить хранить `None`, то в каждом запросе к базе придется указывать сразу …

Откажитесь от input

Пользоваться программой и тестировать её станет проще, если заменить функцию `input` на стандартную библиотеку `argparse`.

Укажите related_name

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

Замените поля CharField / TextField

В базе данных `CharField` и `TextField` представлены по-разному. `CharField` — это поле фиксированного размера, в …

Поставьте точки в конце предложений

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

Разбейте большой блок кода на функции

Когда блок кода перестаёт умещаться в половину экрана монитора приходит пора бить его на функции. …

Разрешите пользователю указать другой путь к файлу

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

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

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

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

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

Считывайте архив равными порциями

Метод `readline` считывает данные до символа переноса строки `\n`. В бинарном файле сложно предсказать когда …

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

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

Спрячьте пустой default в текстовых полях

Обычно Django кладёт `None` во все незаполненные поля модели данных. Пустой `IntegerField` — это `None`, …

Используйте verbatim на весь тег

Вы используете `{% verbatim %}`, но он захватывает какую-то рандомную область в шаблоне. Получается, что …

Воспользуйтесь циклами

При написании программ часто возникает потребность делать одно и то же действие для нескольких объектов. …

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

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