10 мощных функций из стандартной библиотеки Python

10 мощных функций из стандартной библиотеки Python

Сегодня я пишу о доступных функциях в стандартной библиотеки и расскажу про их применение.

Введение

В экосистеме Python доступно множество потрясающих библиотек, но иногда все, что вам нужно — это встроенная функция. Это может быть не так гламурно, без брендинга нового пакета, но вы можете пройти долгий путь со стандартной библиотекой. Во всяком случае, изучение следующих встроенных модулей Python может помочь вам ускорить разработку и улучшить читабельность кода.

Примечание: в этой статье будет использоваться версия Python 3.7+.

Функция enumerate

Функция enumerate удобна, когда вы хотите отслеживать индекс во время цикла итерации. Функция может удалить переменные счетчика, которые вы могли бы использовать, если бы перешли в Python с другого языка. Рассмотрим пример:

10 мощных функций из стандартной библиотеки Python

Способ работы enumerate заключается в возврате объекта enumerate с помощью метода __next__, который возвращает кортеж (count, value). Вы даже можете использовать деструктуризацию для перечисления более сложных значений:

10 мощных функций из стандартной библиотеки Python

Функция zip

Функция zip полезна, когда вы хотите объединить несколько итераций вместе. Распространенным вариантом использования является цикл по двум спискам одновременно без прямой индексации. Например:

10 мощных функций из стандартной библиотеки Python

Удаление ручной индексации облегчает понимание кода, поскольку устраняет шаг размышления о том, чему соответствует индекс. Если вы чувствуете себя странно, вы можете объединить enumerate с zip, потому что enumerate не заботится о том, какой тип итерации он получает:

10 мощных функций из стандартной библиотеки Python

Функция map

Функция map мощна в своей общности, и её понимание может помочь вам ускорить вычисления с помощью многопроцессорной обработки. Концептуально map применяет заданную функцию к каждому элементу в итерационной модели и возвращает результаты по порядку. Мы можем использовать lambda для быстрого создания функции «f(x) = abs(x ** 2 — 4 * x)» и сопоставить её с некоторыми значениями x:

10 мощных функций из стандартной библиотеки Python

С map ясно, что мы пытаемся применить func ко всем xs, но не указывая точно, как это сделать. Например, если бы xs был большим вектором, мы могли бы ускорить это вычисление, используя аналогичный метод map на объекте multiprocessing.Pool:

10 мощных функций из стандартной библиотеки Python

Обратите внимание, что мы используем ключевое слово with для создания контекста управления ресурсами обработки «pool». Функция cpu_count вернет количество тел, доступных в программе, а pool.map будет применять func к элементам xs параллельно. Это демонстрирует, что map также предоставляет полезный синтаксис для выражения одной программы и вычисления в стиле множественных данных (SPMD).

Функция dir

Функция dir полезна для выполнения самоанализа объектов Python (чтобы увидеть, какие атрибуты у них есть). Например, мы можем использовать dir, чтобы увидеть, что определено в модуле os:

10 мощных функций из стандартной библиотеки Python

Мы также можем использовать dir для наблюдения специальных методов, лежащих в основе модели данных Python:

10 мощных функций из стандартной библиотеки Python

В этом списке вы можете видеть не только такие методы, как append и sort, но и метод __iter__, который возвращает объект итератора при включении.

Модуль string

Модуль string содержит полезные константы, которые могут сэкономить вам время при вводе текста. Например, если вам когда-нибудь понадобятся все буквы английского алфавита, вы можете использовать «string.ascii_lowercase» или «string.ascii_uppercase»:

10 мощных функций из стандартной библиотеки Python

Я использовал string.ascii_uppercase при работе с 384-луночными пластинами, имеющими названия скважин от «A1» до «P24».

Модуль itertools

Как следует из названия, модуль itertools содержит утилиты для работы с iterables. Эти строительные блоки итератора не только обеспечивают эффективность памяти за счет ленивого выполнения, но и обеспечивают чистый синтаксис для нескольких распространенных преобразований.

itertools.cycle

Функция «itertools.cycle» принимает итерацию и возвращает итератор, который будет бесконечно перебирать исходные входные значения:

10 мощных функций из стандартной библиотеки Python
cycle.jpg

Как вы можете видеть, это может быть полезно для циклического перебора стилей построения графиков, где громоздко указывать тонну стилей и хорошо повторять некоторые. Обратите внимание, что цикл использовался внутри zip, поэтому итератор циклических стилей не исчерпал себя, несмотря на присутствие len(styles) < n_lines.

itertools.product

Функция itertools.product возвращает декартово произведение входных итераций, что является просто причудливым способом сказать, что она создает сетку:

10 мощных функций из стандартной библиотеки Python

Здесь мы получаем список из 384 кортежей (16 строк * 24 столбца), которые циклически, как одометр, проходят через входные итерации.

Модуль functools

Модуль functools содержит функции, которые действуют на другие функции. Здесь вы можете найти множество отличных утилит функционального программирования.

functools.partial

Функция functools.partial позволяет нам заранее указывать определенные аргументы в виде фиксированных значений. Такая функция возвращает новую функцию, которая принимает меньше аргументов:

10 мощных функций из стандартной библиотеки Python

Код выводит 16, потому что g(x) = f(x, y=0) = abs(x ** 2). Это особенно полезно при работе с функциями более высокого порядка, которые предполагают определенную сигнатуру для входной функции (то есть использование pool.map для многопроцессорной обработки).

Полезные модули ввода-вывода

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

json

Модуль json предоставляет встроенный интерфейс для чтения и записи данных «JSON»:

10 мощных функций из стандартной библиотеки Python

Этот модуль особенно полезен при работе с данными из интернета, выполнении собственного скребка или работе с другими языками, которые хорошо работают с «JSON».

pickle

Модуль pickle предоставляет встроенный интерфейс для чтения и записи сортированных объектов. Pickling — это процесс сериализации объектов Python в плоскую двоичную структуру, которая может быть записана на диск. Поэтому модуль «pickle» полезен для сохранения объекта в его текущем состоянии для последующего использования:

10 мощных функций из стандартной библиотеки Python

Этот вариант часто используется в приложениях машинного обучения, где methods являются объектами Python, а weights — это внутреннее состояние, которое должно быть сохранено.

Заключение

Обсуждаемые в данной статье функции — это всего лишь несколько примеров потрясающих встроенных функций, доступных в Python. В следующий раз, когда вы поймаете себя на том, что пытаетесь понять, как написать что-то ясным и кратким способом, подумайте о стандартной библиотеке Python. Это много раз помогало мне, и я надеюсь, что это поможет и вам.

Егор Егоров

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

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Николай

    а есть кто-то, кто использует питон и не знает про них?

    Ответить
    1. Егор Егоров автор

      может быть новички ?:)

      Ответить