Python - Советы, библиотеки, гайды
19.7K subscribers
1.17K photos
25 videos
6 files
589 links
Всё для Python программиста :3
Готовый код, советы, лайфхаки, годные библиотеки, уроки и многое другое!

Автор - Абрахам (@priler)

РКН: https://kurl.ru/uXZzR
Download Telegram
zip() — функция которая создает итератор кортежей.

Более формально: функция zip() возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждой итерации аргументов.

В функции zip() элементы не будут обрабатываться, пока не будет повторена итерация, например циклом for/in или заключением в список list(zip()).

Следует учитывать, что итерации, передаваемые в zip(), могут иметь разную длину, иногда намеренно, а иногда из-за ошибки в коде.

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

Более подробную информацию про функцию zip() можно прочитать здесь.
👍30😢1
calendar — модуль для вывода календаря в Python!

Это одновременно простой, но и функциональный модуль для вывода календаря.

В модуле calendar есть функция month(), которая вернёт календарь указанного месяца в виде строки, как показано на примере выше.

Если строки вас не устраивают, то в модуле есть куча разных методов для получения самых разных итераторов. Так же можно получить календарь в виде HTML.

Стоит отметить что модуль является встроенным, отдельно его устанавливать не нужно :)

Документация и примеры кода здесь.
👍578
Wikipedia — это модуль для Python, который является оболочкой Wikipedia.

Он поддерживает: извлечение текстов, разделов, ссылок, категорий, переводов и т. д. из Википедии.

Цель модуля Wikipedia состоит в том, чтобы предоставить простой и удобный парсер для получения информации из Википедии.

Где может пригодится данный модуль?
Данный модуль универсален и подойдёт практически для всего того, что нужно найти. Например, в голосовом помощнике Alexa уже давно реализован поиск по Википедии, что не может не радовать.

Модуль имеет возможность получить код html-страницы, что может быть полезно в веб-сервисах.

Можно использовать как для личного, так и для коммерческого использования :)

Стоит отметить, что поиск информации осуществляется только при наличии подключения к сети, иначе - ничего не выйдет.

Ставится командой pip install wikipedia
Документация и примеры кода здесь.
🤩29👍91🔥1
loguru — это библиотека, целью которой является приятное ведение логирования в Python!

Перестаньте уже использовать print(), используйте логирование!

В Python уже существует библиотека для логирования logging, но у неё есть одна проблема — время, которое мы тратим на настройку конфига, да и работа с ним затрудняется, если конфиг становится больше.

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

В loguru есть: асинхронность, стек вызовов, отправка уведомлений на почту и понятность :3

Стоит отметить, что основная концепция loguru заключается в том, что существует только один логгер.

Ставится командой pip install loguru
Документация и примеры кода здесь.
👍363
validate_email — это простой модуль для валидации email-адресов.

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

Функция validate_email проверяет не на существование email-адреса, а возможность на его существования. На фото выше приведён пример.

Модуль отлично подойдёт для различных форм регистрации/входа и в различных других проектах.

Стоит отметить, что при обращении validate_email к DNS записям необходимо предварительно установить модуль py3dns.

Ставится командой pip install validate_email
Простенькая документация и примеры кода здесь.
👍371
Вот они - будущие питонисты 🐍🌚
👍227😁70😢147🤩7🎉5🔥2
Функция map() — применяет функцию к каждому элементу последовательности и возвращает итератор с результатами.

Например, с помощью map можно выполнять преобразования элементов. Перевести все строки в верхний регистр как показано на примере выше.

Функция map() используется для применения функции к каждому элементу итерируемого объекта (например, списка или словаря) и возврата нового итератора для получения результатов.

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

Как правило, вместо map можно использовать list comprehension. Чаще всего, вариант с list comprehension более понятный, а в некоторых случаях даже быстрее.

Но, map может быть эффективней в том случае, когда надо сгенерировать большое количество элементов, так как map - итератор, а list comprehension генерирует список.

Документация и примеры кода здесь.
19👍13🔥2😱1
🐍 Совет по Python №8.
Создавайте более простые объекты, поддерживающих выражение with!

Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками?

Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit как показано на первом примере.

На первом примере вы видите более распространённый способ реализации возможностей менеджера контекста в Python, но то же самое можно сделать и проще, что и показано на втором примере.

На втором примере протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.
👍334😢1
filter() — функция, которая применяет функцию ко всем элементам последовательности и возвращает итератор с теми объектами, для которых функция вернула True.

Функция filter может использоваться для создания нового итератора из существующего итерируемого объекта (например списка или словаря), который эффективно отфильтрует элементы с помощью предоставленной нами функции.

Итерируемый объект — это объект Python, по которому можно выполнить итерацию, то есть он вернет элементы в такой последовательности, которую мы можем использовать в цикле for​​​.

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

На примере выше мы возвращаем только те строки, в которых находятся числа, что может быть удобно в некоторых проектах :)

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

Документация и примеры кода здесь.
👍34🔥3😢1
abc — модуль, который помогает проектировать абстрактные сущности.

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

Формально говоря, абстрактные классы не являются чем-то необходимым в силу динамичности языка. Если мы выкинем все упоминания абстрактности классов и методов из рабочего кода, он продолжит работать как и ранее.

На примере выше видно, как с помощью под-модуля мы создаём класс Hero, а затем и класс Archer где прописываем то, что нам нужно. Стоит отметить, что без последней строки код работать не будет, ведь мы его не вызываем.

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

Ставить ничего не нужно, ведь это встроенный модуль :3
Документация и примеры кода здесь.
👍162🔥1
itertools — встроенный в Python модуль, который является сборником полезных итераторов.

Что делает itertools?
Модуль itertools содержит строительные блоки итераторов, основанные на конструкциях из языков программирования APL, Haskell и SML. В itertools есть множество конструкций, например: циклы, комбинации значений, фильтрация последовательности и т.д.

Код, приведенный выше, показывает работу функции cycle с поочередным выводом.

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

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

Документация и примеры кода здесь.
👍305🔥1
Seaborn — библиотека для создания статистических графиков на Python.

Данная библиотека построена на основе matplotlib и тесно интегрируется со структурами данных pandas. Seaborn помогает вам изучить и понять данные.

Его функции построения графиков работают с датасетами и выполняют все необходимые преобразования для создания информативных графиков.

Синтаксис, ориентированный на набор данных, позволяет сосредоточиться на графиках, а не деталях их построения.

Чтобы нарисовать гистограмму в Seaborn нужно вызвать функцию barplot(), и передать ей категориальные и числовые переменные, которые нужно визуализировать, как это сделано в примере. Результат примера здесь :3

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

Ставится командой pip install seaborn
Документация и примеры кода здесь.
👍24🤯3🔥1😢1
Немного философии от Python 🐺
👍112🤔22😁179🔥2
🐍 А вы знали? Выпуск №22

bool — логическая функция в Python, которая возвращает только два значения, а именно: True и False.

Функция bool может пригодится в проектах, где пустое значение не пропускается кодом.

В каких случаях функция bool() вернет True:

1. непустая строка (в том числе если это один или несколько пробелов)
2. ненулевое число (в том числе меньшее единицы, например -5)
3. непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж)
4. функция.

Иначе - bool вернёт False(не учитывая последний пункт разумеется)

Не смотря свою маленькую функциональность, bool может пригодится много где, что не может не радовать :)
👍36😁5😢2
SOLID — это мнемоническая аббревиатура для набора принципов проектирования, созданных для разработки программного обеспечения при помощи объектно-ориентированных языков.

Для чего нужен SOLID?

Принципы SOLID направленны на содействие разработки более простого, надежного и обновляемого кода. Каждая буква в аббревиатуре SOLID соответствует одному принципу разработки.

При правильной реализации это делает ваш код более расширяемым, логичным и легким для чтения.

Для понимания SOLID принципов, вы должны хорошо понимать как используются интерфейсы.

SOLID-принципы расшифровываются следующим образом:

SПринцип единственной ответственности.

OПринцип открытости/закрытости.

LПринцип подстановки Барбары Лисков.

IПринцип разделения интерфейсов.

DПринцип инверсии зависимостей.

Стоит отметить, что SOLID довольно глубокая тема в которую нужно погружаться глобально, поэтому попутно что либо изучая - вам будет сложнее понять сам SOLID.
🤔16👍6🔥1😱1🎉1
К чему все эти сложности, когда есть Python 🌚
😁124👍188🔥3😱3🤔2
ООП (или же объективно ориентированное программирование) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Для начала разберемся с формулировками:

Класс — тип, описывающий устройство объектов.

Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.

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


В Python всё является объектами - строки, списки, словари и всё остальное.

Но возможности ООП в Python этим не ограничены. Программист может написать свой тип данных (класс) и определить в нём свои методы.

Сверху приведён самый простой пример, где мы задаём класс с собственными методами а затем возвращаем и используем его :3

Стоит отметить, что ООП не является обязательным - мы можем пользоваться только встроенными объектами. Однако ООП полезно при долгосрочной разработке программы несколькими людьми, так как упрощает понимание кода.

Документация и примеры кода здесь.
👍431😱1
Узнайте все о NFT, блокчейне, метавселенных, искусственном интеллекте, нейронных сети, Data Science и кибернетике умных устройств в Telegram канале.

Реальные кейсы и интервью с экспертами из этих областей.
🤯4👍1😁1😱1
PEP-8 — это документ, который описывает соглашение о том, как писать код для Python, включая стандартную библиотеку, входящую в состав Python.

Кто создал PEP-8?

PEP 8 создан на основе рекомендаций Гвидо ван Россума
с добавлениями от Барри. Если где-то возникал конфликт, мы выбирали стиль Гвидо. И, конечно, этот PEP может быть неполным (фактически, он, наверное, никогда не будет закончен).

Для чего он нужен?

Ключевая идея Гвидо такова
: код читается намного больше раз, чем пишется. Собственно, рекомендации о стиле написания кода направлены на то, чтобы улучшить читаемость кода и сделать его согласованным между большим числом проектов.

PEP-8 это руководство о согласованности и единстве. Согласованность с этим руководством очень важна. Согласованность внутри одного проекта еще важнее. А согласованность внутри модуля или функции — самое важное.

Важно помнить, что иногда это руководство неприменимо, и нужно понимать, когда можно отойти от рекомендаций.

Ознакомиться с PEP-8 вы можете здесь :3
👍21🔥1😱1
🐍 А вы знали? Выпуск №23

Преобразование входящих данных в список
.

Почему это происходит?

На фото выше показан сам кусочек кода, где мы указываем что функция input() для ввода данных, а затем функция split() для разделения входящих данных по пробелу будет в структуре данных list.

Интересный факт :3

Чтобы вывод был без скобок, запятых и других символов листа, перед переменной нужно поставить звёздочку: print(*lst). Это называется распаковка :)
👍28😁17🔥42😱2