12 магических советов для написания лучшего Python-кода
Улучшите качество своего кода — даем набор последних возможностей, техник, советов и приемов программирования на Python. Это простые приемы программирования, которые реально помогут любому новичку улучшить стиль и навыки своего программирования.
-
F-строки
F-строки обеспечивают лаконичный и удобный способ встраивания выражений Python внутрь строковых литералов для форматирования.
Сначала определим две переменные name и age, которые нужно включить в оператор печати.
name = "Pavel" age = 23
Чтобы не заниматься конкатенацией строк или использованием запятых внутри оператора печати, вы можете использовать улучшенный синтаксис форматирования строк Python «f-Strings», который был выпущен в Python 3.6.
Просто поставьте строчную или заглавную букву «f» перед строкой с переменными или выражениями внутри фигурных скобок.
F-строки — это отличный новый способ форматирования строк, более удобный для чтения, быстрый, лаконичный и менее подверженный ошибкам, чем другие способы форматирования!
-
Функция справки
Функция справки Python используется для поиска документации по модулям, функциям, классам, ключевым словам и т.д.
Просто передайте объект в функцию help, чтобы получить документацию по этому объекту:
-
Определение размера любого объекта
Модуль sys по умолчанию содержит функцию getsizeof, которая принимает объект и возвращает его размер в байтах. Объект может быть любого типа.
Например:
Учитывается только расход памяти, непосредственно приписываемый объекту, а не расход памяти объектов, на которые он ссылается.
Другой пример:
-
Цепочка операторов сравнения
Обычно, чтобы проверить более двух условий, необходимо использовать логические операторы, такие как and/or
if a < b и b < c:
В Python есть лучший способ написать это с помощью цепочки операторов сравнения.
Цепочка операторов может быть записана следующим образом:
if a < b < c:
Например:
-
Списковое включение (List comprehension)
List comprehension — это еще один зачастую более элегантный способ создания списков.
Вместо того чтобы создавать пустой список и добавлять каждый элемент в конец, вы можете просто определить список и его содержимое одновременно, следуя этому формату:
new_list = [expression for item in iterable (if conditional)]
Например:
Другой пример (с условием):
-
Умножение строк
В Python можно умножать не только числа, но и строки.
Например:
-
Назначение нескольких переменных в одной строке
Вы можете присвоить несколько значений нескольким переменным, разделяя переменные и значения запятыми:
Это также работает при разрушении/распаковке последовательностей, таких как списки или кортежи, и является более элегантным способом присвоения элементов последовательности отдельным переменным, поскольку нет необходимости использовать цикл или отдельно индексировать каждый элемент последовательности.
-
Замена переменных на месте
Во многих других языках программирования поменять местами значения двух или более переменных можно было только путем определения дополнительной временной переменной (temp).
Допустим, вы хотите поменять местами x и y:
temp = x x = y y = temp
В Python существует простая однострочная конструкция для обмена переменными, аналогичная концепции присвоения значений нескольким переменным в одной строке.
Следующий код делает то же самое, что и выше, но без использования временной переменной:
-
Создание перечисления
Enum — это класс в Python для создания перечислений, которые представляют собой набор символических имен, прикрепленных к уникальным, постоянным значениям.
Для того чтобы создать Enum, необходимо создать класс, который является именем нужного вам Enum.
Все, что осталось сделать, это перечислить переменные и установить их равными нужным значениям:
Чтобы получить доступ к перечислению memberPaulas, вы можете просто сделать Person.Paul, что вернет 0.
В Python приведенный выше пример можно сократить, перечислив переменные рядом друг с другом и установив их равными функции range:
-
Перечислить
Часто при циклическом просмотре списка вы хотите получить доступ не только к индексу с позицией в списке, но и к самому элементу.
Давайте определим список символов:
x = ['a', 'b', 'c']
Вместо того, чтобы перебирать его стандартным способом, нужно получить доступ к элементу и индексу:
Использование enumerate
Enumerate — это встроенная функция Python, которая позволяет нам перебирать итерации и иметь автоматический счетчик. По сути, она сопоставляет каждый элемент в нашем списке с соответствующим индексом. Большинство новичков и даже некоторые опытные программисты не знают об этом.
Вы можете изменить имена переменных i и v на те, которые вам больше нравятся. Например, для index, count в enumerate(x).
-
Функция Dir
dir() — это мощная встроенная функция в Python3, которая возвращает список атрибутов и методов любого объекта, т.е. функций, модулей, строк, списков, словарей и т.д.
Это может быть очень полезно, когда о модуле нет практически никакой информации, и помогает быстрее изучать новые модули.
Например:
dir() часто используется в целях отладки. Способность dir() перечислять все атрибуты переданного параметра очень полезна при работе с большим количеством классов и функций по отдельности.
-
Распаковка аргументов
Иногда называемый оператором Splat или Scatter * работает, когда аргументы в списке/кортеже должны быть распакованы для вызова функции, требующей отдельных позиционных аргументов.
Например, встроенная функция range() ожидает отдельных аргументов start и stop. Вы можете использовать оператор * для распаковки аргументов из списка или кортежа при написании вызова функции:
Определим простой список x = [1,2,3,4,5].
Обычным примером использования оператора распаковки будет использование print:
print(*x) // Результат: 1 2 3 4 5
Это просто выводит каждый элемент списка рядом друг с другом, разделенные пробелом, поскольку оператор распаковки берет все элементы списка и передает их в качестве параметра, поэтому перевод приведенного выше кода будет print(1,2,3,4,5).
Этот трюк в Python довольно часто используется в функциях, чтобы «упаковать» все аргументы, которые получает вызов метода, в одну единственную переменную.
Например:
Функция func выше может принимать неограниченное количество аргументов (args[0] и args[1] будут передавать первый и второй аргументы соответственно).
Аналогичным образом словари могут передавать аргументы ключевых слов с помощью оператора **.
Давайте определим словарь Python под названием person:
person = {"name": "Paul", "age": 23, "location": "London"}
Вы можете использовать оператор ** для передачи словаря в функцию.
Переданный словарь разложит ключи как аргументы ключевого слова функции, а затем примет значение как фактическое значение, переданное для этого аргумента.
Например:
Почему Python (вместо заключения)?
Python — это высокоуровневый язык программирования общего назначения, который может применяться для решения множества различных задач.
Язык поставляется с большой стандартной библиотекой, которая охватывает такие области, как обработка строк (регулярные выражения, Unicode, вычисление различий между файлами), интернет-протоколы (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, программирование CGI), разработка стандартного программного обеспечения (модульное тестирование, протоколирование, профилирование, разбор кода Python) и интерфейсы операционной системы (системные вызовы, файловые системы, сокеты TCP/IP).
Python является одним из самых популярных и простых в изучении языков программирования и используется практически везде, включая веб-разработку. Для Python существует множество самых популярных фреймворков. Многие из них оптимизируют разработку и предоставляют инструменты, позволяющие развернуть готовый продукт всего за пару дней.




















Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: