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

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

РКН: https://kurl.ru/uXZzR
Download Telegram
Folium — библиотека для визуализации данных на карте!

В предыдущем посте мы рассмотрели модуль geopy который был создан для работы с геолокациями, оттуда мы взяли координаты Японии, поэтому сегодня будем использовать именно эти координаты.

Folium позволяет как и привязать данные к карте для визуализации фоновых картограмм, так и передавать векторные, растовые и HTML визуализации в качестве маркеров на карте.

На примере выше мы видим, как в переменную "m" передаём координаты Японии и зумим так, как нам надо.

Далее в переменную tooltip передаётся текст, который будет показываться при наводке, добавляем маркер на заданные координаты и сохраняем в файл "xo_py.html".

То что у нас вышло - тут :3

Библиотека имеет ряд встроенных наборов тайлов от OpenStreetMap, Mapbox и Stamen и поддерживает пользовательские наборы тайлов с ключами API Mapbox или Cloudmade. folium поддерживает наложения изображений, видео, GeoJSON и TopoJSON.

Ставится командой pip install folium
Документация и примеры кода здесь.
👍35🔥41🤯1
Этот парень был просто из тех, кто любил писать на питоне ... 🌚
👍136😁29🔥5🤔4
Генератор — это функция, которая возвращает объект итератора.

Она выглядит как обычная функция, за исключением того, что она содержит выражение yield для создания серии значений, которые можно использовать в цикле for … in или которые можно извлечь по одному с помощью функции next().

Сверху самый простой пример функции генератора.

Любая функция содержащая ключевое слово yield, является функцией генератора.

Генераторы это отличный способ улучшить производительность кода, и они очень просты в использовании!

Когда вызывается функция генератора, то она не возвращает единственное значение, как это делает оператор return. Вместо этого она возвращает объект генератора, который поддерживает протокол итератора.

Разница между yield и оператором return заключается в том, что при достижении выхода, состояние выполнения генератора приостанавливается и локальные переменные сохраняются. При следующем вызове метода генератора next() функция возобновит свое выполнение.

Подробнее о генераторах вы можете почитать здесь.
👍312
Googletrans — это бесплатная и неограниченная библиотека Python, в которой реализован API Google Translate.

Что умеет данная библиотека?
Данная библиотека умеет переводить текст со 106-ти языков 🤯 (включая русский, украинский и, конечно же, английский), обнаруживать языки, писать транскрипция и другие полезные функции.

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

В связке с библиотекой gTTS (библиотека для озвучивания текста от Google) может получиться полноценная программа для перевода текста 🔥

Ставится командой pip install googletrans
Документация и примеры кода здесь.
👍56🤩10🔥1
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