5 полезных фич Python, о которых знают не все

5 полезных фич Python, о которых знают не все

Даже если ты программист, перешедший с других языков, таких как C, в программирование на Python с более высоким уровнем абстракции – не стоит пугаться и отступать перед “не таким” кодом. Погнали!

Многие назвали бы lambda , map и filter «трюками» Python, которым должен научиться каждый новичок. Принято считать, что эти функции большую часть времени, не особенно полезны, поскольку им не хватает гибкости.

Лямбда – это метод составления функции в одну строку для одноразового использования. Если он вызывается несколько раз, страдает производительность. С другой стороны, map применяет функцию ко всем элементам списка, в то время как filter получает подмножество элементов в наборе, удовлетворяющем пользовательскому условию.

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

Python поддерживает отрицательную индексацию, где aList[-1] == aList[len(aList)-1] . Исходя из этого, можно получить второй последний элемент в списке – aList[-2] и так далее.

Также можно нарезать списки с помощью записи aList[start:end: step] , где начальный элемент указан, а конечный – нет. Поэтому вызов aList[2:5] вернет [2, 3, 4] , а вызвав aList[:: -1] , ты сможешь переставить элементы в списке в обратном порядке – очень элегантная техника.

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

Функция zip создает итератор, который агрегирует элементы из нескольких списков. Он позволяет выполнять параллельный обход списков в цикле for и параллельную сортировку. Обратное действие ( unzip ) совершается с помощью звездочки.

enumerate может показаться немного пугающим, но данную функцию удобно применять во многих ситуациях. Наиболее популярный вариант – автоматический счетчик для цикла for : больше нет необходимости создавать и инициализировать переменную счетчика с помощью counter = 0 и counter += 1 . enumerate и zip – это два самых мощных инструмента при построении цикла for .

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

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

Самая интересная и увлекательная штука из подборки.

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

Поэтому крайне важно создать отдельные автономные виртуальные среды venv для каждого приложения, что и можно сделать с помощью pip или conda.