Познакомьтесь со стандартными библиотеками Python как никогда раньше

Введение

Большинство людей думают, что массовое доминирование Python связано с его мощными пакетами, такими как NumPy, Pandas, Sklearn, XGBoost и т. д. Это сторонние пакеты, написанные профессиональными разработчиками, часто с помощью других более быстрых языков программирования, таких как C, Java или C++. .

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

Я предлагаю вашему вниманию 20 легковесных пакетов, которые встроены в вашу установку Python и находятся всего в одной строке от того, чтобы быть выпущенными.



Получите лучшие и последние статьи по машинному обучению и искусственному интеллекту, выбранные и обобщенные с помощью мощного искусственного интеллекта — альфа-сигнала:



1️. контекстная библиотека

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

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

Ниже вы можете увидеть контекстный менеджер, который служит таймером:

Обертывание функции, написанной со специальным синтаксисом, декоратором contextmanager из contextlib, преобразует ее в менеджер, который можно использовать с ключевым словом with. Подробнее о пользовательских контекстных менеджерах можно прочитать в моей отдельной статье.

📚 Документация: https://docs.python.org/3/library/contextlib.html

💻 Демо: ссылка

2️. инструменты

Хотите более мощные, короткие и многофункциональные функции? Тогда functools поможет вам. Эта встроенная библиотека содержит множество методов и декораторов, которые вы можете обернуть существующими, чтобы добавить дополнительные функции.

Одним из них является partial, который можно использовать для клонирования функций, сохраняя при этом некоторые из их аргументов с пользовательскими значениями. Ниже мы копируем read_csv из Pandas, чтобы нам не приходилось повторять передачу одних и тех же аргументов для чтения некоторых конкретных CSV-файлов:

Еще один из моих любимых — кэширующий декоратор. После переноса cache запоминает все выходные данные, которые сопоставляются с входными данными, чтобы результаты были немедленно доступны, когда в функцию передаются одни и те же аргументы. Библиотека streamlit в значительной степени использует такую ​​функцию.

📚 Документация: https://docs.python.org/3/library/functools.html

3️. itertools

Если вы когда-нибудь окажетесь в ситуации, когда вы пишете вложенные циклы или сложные функции для перебора более чем одного итерируемого объекта, проверьте, есть ли уже функция в библиотеке itertools. Возможно, вам не придется изобретать велосипед — Python учтет все ваши потребности.

Ниже приведены некоторые удобные функции итерации из библиотеки:

📚 Документация: https://docs.python.org/3/library/itertools.html

4️. шарик

Для пользователей, которые любят сопоставление с образцом в стиле Unix, библиотека glob должна чувствовать себя как дома:

glob содержит все необходимые функции для одновременной работы с несколькими файлами без головной боли (или с помощью мыши).

📚 Документация: https://docs.python.org/3/library/glob.html

5️. pathlib

Модуль Python os, мягко говоря, отстой... К счастью, основные разработчики Python услышали крики миллионов и представили библиотеку pathlib в Python 3.4. Это обеспечивает удобный объектно-ориентированный подход к системным путям.

Он также очень старается решить все проблемы, связанные с (прилагательное) системой путей Windows:

📚 Документация: https://docs.python.org/3/library/pathlib.html

6️. sqlite3

К радости специалистов по данным и инженеров, Python поставляется со встроенной поддержкой баз данных и SQL через пакет sqlite3. Просто подключитесь к любой базе данных (или создайте ее) с помощью объекта подключения и запускайте SQL-запросы. Пакет работает послушно.

📚 Документация: https://docs.python.org/3/library/sqlite3.html

7️. hashlib

Python пустил глубокие корни в сфере кибербезопасности, а не только в области искусственного интеллекта и машинного обучения. Примером этого является библиотека hashlib, которая содержит наиболее распространенные (и безопасные) криптографические хэш-функции, такие как SHA256, SHA512 и т. д.

📚 Документация: https://docs.python.org/3/library/hashlib.html

8️. секреты

Я люблю мистические романы. Вы когда-нибудь читали Собаку Баскервилей? Это фантастика, иди и читай.

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

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

📚 Документация: https://docs.python.org/3/library/secrets.html

9️. разбор аргументов

Вы хорошо работаете в командной строке? Тогда вы один из немногих. Также вам понравится библиотека argparse. Вы можете заставить свои статические сценарии Python принимать пользовательский ввод с помощью аргументов ключевого слова CLI.

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

Я настоятельно рекомендую ознакомиться со статьей RealPython для всестороннего обзора библиотеки.

📚 Документация: https://docs.python.org/3/library/argparse.html

💻 Демо-урок: Настоящий Python

10. случайный

В этом мире не бывает случайностей — Угвэй.

Может быть, поэтому ученые используют псевдослучайность, что чистой случайности не существует.

В любом случае модуля random в Python должно быть более чем достаточно для имитации базовых случайных событий:

📚 Документация: https://docs.python.org/3/library/random.html

1️1. соленый огурец

Точно так же, как размеры наборов данных становятся все больше и больше, растут и наши потребности в их более быстром и эффективном хранении. Одной из альтернатив плоским файлам CSV, которые изначально поставляются с вашей установкой Python, является формат файла pickle. На самом деле он в 80 раз быстрее CSV при вводе-выводе и занимает меньше памяти.

Вот пример, который собирает набор данных и загружает его обратно:

📚 Документация: https://docs.python.org/3/library/pickle.html

💻 Сравнительная статья Дарио Радечича: ссылка

1️2. шутил

Библиотека shutil, обозначающая утилиты оболочки, представляет собой модуль для расширенных операций с файлами. С помощью shutil вы можете копировать, перемещать, удалять, архивировать или выполнять любые операции с файлами, которые вы обычно выполняете в проводнике или на терминале:

📚 Документация: https://docs.python.org/3/library/shutil.html

13. статистика

Кому вообще нужны NumPy или SciPy, когда есть модуль statistics? (Вообще-то все так делают — я просто хотел написать драматическую фразу).

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

📚Документация: https://docs.python.org/3/library/statistics.html

14. gc

Python действительно делает все возможное. Он поставляется со всем — от менеджеров пакетов до сборщиков мусора.

Да, вы правильно поняли (/прочитали). Модуль gc после включения служит сборщиком мусора в программах Python. В языках нижнего уровня эта утомительная задача возложена на разработчика, которому приходится вручную выделять и освобождать требуемые в программе куски памяти.

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

📚Документация: https://docs.python.org/3/library/gc.html

💻Управление памятью в Python — ссылка

15. ппринт

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

Для еще более сложных выводов и пользовательских параметров печати вы можете создавать объекты принтеров с помощью pprint и использовать их несколько раз. Подробности в документах.

📚 Документация: https://docs.python.org/3/library/pprint.html

16. пидок

Код чаще читают, чем пишут — Гвидо Ван Россум.

Угадай, что? Я люблю документацию и пишу ее для собственного кода (не удивляйтесь, я немного обсессивно-компульсивное расстройство).

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

Он может служить предварительным обзорным инструментом перед развертыванием ваших документов в других службах, таких как Read the Docs.

📚Документация: https://docs.python.org/3/library/pydoc.html

💻 Руководство по документированию вашего кода — Real Python

17. календарь

Что, черт возьми, происходило в сентябре?

Судя по всему, в сентябре 1752 года в Великобритании было 19 дней. Куда делись 3, 4, … 13? Ну, все дело в гигантской путанице с переходом с юлианского календаря на григорианский, в отношении которого Великобритания очень упрямилась до 1750-х годов. Посмотреть можно здесь.

Так было только в Великобритании. Остальной мир имел смысл и следовал правильному течению времени, что можно увидеть с помощью модуля calendar:

Python серьезно относится ко времени.

📚Документация: https://docs.python.org/3/library/calendar.html

18. веб-браузер

Представьте, что вы сразу переходите к StackOverflow из блокнота Jupyter или скрипта Python. Зачем тебе вообще это делать?

Ну, потому что вы МОЖЕТЕ… с модулем webbrowser.

📚Документация: https://docs.python.org/3/library/webbrowser.html

19. регистрация

Одним из признаков того, что вы смотрите на опытного разработчика, является отсутствие операторов печати в их коде. Ванильная функция print не просто урежет ее для множества вариантов использования, с которыми вам придется иметь дело при кодировании и отладке. Вам нужно использовать более сложные инструменты, такие как logging.

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

📚 Документация: https://docs.python.org/3/library/logging.html

💻 Отличный туториал по логированию в Python: Настоящий Python

20. одновременные.фьючерсы

Я оставил что-то пикантное на конец. Эта библиотека предназначена для одновременного выполнения операций, как в многопоточности.

Ниже я отправляю 100 запросов GET на URL-адрес и получаю ответ. Процесс медленный и утомительный, так как интерпретатор ждет, пока не вернется каждый запрос, и это то, что вы получаете, когда используете циклы.

Гораздо разумнее использовать параллелизм и задействовать все ядра на вашем компьютере. Пакет concurrent.futures позволяет это сделать. Вот основной синтаксис:

Время выполнения сократилось в 12 раз, так как параллелизм позволял отправлять несколько запросов одновременно, используя все ядра. Вы можете узнать больше о параллелизме в приведенном ниже руководстве.

📚 Документация: https://docs.python.org/3/library/concurrent.futures.html

💻 Демонстрационный урок: Статья Дарио Радечича

Заключение

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



Свяжитесь со мной в LinkedIn или Twitter для дружеской беседы обо всем, что связано с данными. Или вы можете просто прочитать другую историю от меня. Как на счет этих: