validate_email — это простой модуль для валидации email-адресов.
Модуль предоставляет одну основную одноименную функцию, предназначенную для валидации адреса, с помощью уже написанных регулярных выражений. Также в функции реализована проверка mx-записи у сервера и существования переданного адреса, за это отвечают необязательные параметры-флаги функции verify и check_mx.
Функция validate_email проверяет не на существование email-адреса, а возможность на его существования. На фото выше приведён пример.
Модуль отлично подойдёт для различных форм регистрации/входа и в различных других проектах.
Стоит отметить, что при обращении validate_email к DNS записям необходимо предварительно установить модуль py3dns.
Ставится командой ⚙
Простенькая документация и примеры кода здесь.
Модуль предоставляет одну основную одноименную функцию, предназначенную для валидации адреса, с помощью уже написанных регулярных выражений. Также в функции реализована проверка mx-записи у сервера и существования переданного адреса, за это отвечают необязательные параметры-флаги функции verify и check_mx.
Функция validate_email проверяет не на существование email-адреса, а возможность на его существования. На фото выше приведён пример.
Модуль отлично подойдёт для различных форм регистрации/входа и в различных других проектах.
Стоит отметить, что при обращении validate_email к DNS записям необходимо предварительно установить модуль py3dns.
Ставится командой ⚙
pip install validate_email
Простенькая документация и примеры кода здесь.
👍37❤1
Функция map() — применяет функцию к каждому элементу последовательности и возвращает итератор с результатами.
Например, с помощью map можно выполнять преобразования элементов. Перевести все строки в верхний регистр как показано на примере выше.
Функция map() используется для применения функции к каждому элементу итерируемого объекта (например, списка или словаря) и возврата нового итератора для получения результатов.
map() - возвращает объект map (итератор), который мы можем использовать в других частях нашей программы. Также мы можем передать объект map в функцию list() или другой тип последовательности для создания итерируемого объекта.
Как правило, вместо map можно использовать list comprehension. Чаще всего, вариант с list comprehension более понятный, а в некоторых случаях даже быстрее.
Но, map может быть эффективней в том случае, когда надо сгенерировать большое количество элементов, так как map - итератор, а list comprehension генерирует список.
Документация и примеры кода здесь.
Например, с помощью 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.
Создавайте более простые объекты, поддерживающих выражение with!
Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками?
Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit как показано на первом примере.
На первом примере вы видите более распространённый способ реализации возможностей менеджера контекста в Python, но то же самое можно сделать и проще, что и показано на втором примере.
На втором примере протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.
👍33❤4😢1
filter() — функция, которая применяет функцию ко всем элементам последовательности и возвращает итератор с теми объектами, для которых функция вернула True.
Функция filter может использоваться для создания нового итератора из существующего итерируемого объекта (например списка или словаря), который эффективно отфильтрует элементы с помощью предоставленной нами функции.
Итерируемый объект — это объект Python, по которому можно выполнить итерацию, то есть он вернет элементы в такой последовательности, которую мы можем использовать в цикле for.
Первый аргумент в filter — это функция, которую мы используем для решения о включении или фильтрации каждого элемента.
На примере выше мы возвращаем только те строки, в которых находятся числа, что может быть удобно в некоторых проектах :)
Функция filter() обеспечивает способ фильтрации значений, который зачастую может быть более эффективным, чем генератор списка, особенно когда мы начинаем работу с большими наборами данных.
Документация и примеры кода здесь.
Функция filter может использоваться для создания нового итератора из существующего итерируемого объекта (например списка или словаря), который эффективно отфильтрует элементы с помощью предоставленной нами функции.
Итерируемый объект — это объект Python, по которому можно выполнить итерацию, то есть он вернет элементы в такой последовательности, которую мы можем использовать в цикле for.
Первый аргумент в filter — это функция, которую мы используем для решения о включении или фильтрации каждого элемента.
На примере выше мы возвращаем только те строки, в которых находятся числа, что может быть удобно в некоторых проектах :)
Функция filter() обеспечивает способ фильтрации значений, который зачастую может быть более эффективным, чем генератор списка, особенно когда мы начинаем работу с большими наборами данных.
Документация и примеры кода здесь.
👍34🔥3😢1
abc — модуль, который помогает проектировать абстрактные сущности.
Абстрактные классы широко фигурируют в ООП и часто всплывают в шаблонах проектирования. Они говорят, что общий интерфейс уже обозначен, но этот класс еще не предназначен для использования, кроме как для наследования от него конкретных потомков.
Формально говоря, абстрактные классы не являются чем-то необходимым в силу динамичности языка. Если мы выкинем все упоминания абстрактности классов и методов из рабочего кода, он продолжит работать как и ранее.
На примере выше видно, как с помощью под-модуля мы создаём класс Hero, а затем и класс Archer где прописываем то, что нам нужно. Стоит отметить, что без последней строки код работать не будет, ведь мы его не вызываем.
Абстрактные классы нужны на этапе проектирования или расширения кода, чтобы обеспечивать «правильные» взаимодействия новых классов, защищая от создания экземпляров абстрактных классов.
Ставить ничего не нужно, ведь это встроенный модуль :3
Документация и примеры кода здесь.
Абстрактные классы широко фигурируют в ООП и часто всплывают в шаблонах проектирования. Они говорят, что общий интерфейс уже обозначен, но этот класс еще не предназначен для использования, кроме как для наследования от него конкретных потомков.
Формально говоря, абстрактные классы не являются чем-то необходимым в силу динамичности языка. Если мы выкинем все упоминания абстрактности классов и методов из рабочего кода, он продолжит работать как и ранее.
На примере выше видно, как с помощью под-модуля мы создаём класс Hero, а затем и класс Archer где прописываем то, что нам нужно. Стоит отметить, что без последней строки код работать не будет, ведь мы его не вызываем.
Абстрактные классы нужны на этапе проектирования или расширения кода, чтобы обеспечивать «правильные» взаимодействия новых классов, защищая от создания экземпляров абстрактных классов.
Ставить ничего не нужно, ведь это встроенный модуль :3
Документация и примеры кода здесь.
👍16❤2🔥1
itertools — встроенный в Python модуль, который является сборником полезных итераторов.
Что делает itertools?
Модуль itertools содержит строительные блоки итераторов, основанные на конструкциях из языков программирования APL, Haskell и SML. В itertools есть множество конструкций, например: циклы, комбинации значений, фильтрация последовательности и т.д.
Код, приведенный выше, показывает работу функции cycle с поочередным выводом.
Для чего нужен itertools?
itertools повышает эффективность работы с циклами и генераторами последовательностей объектов. Это достигается за счет лучшего управления памятью в программе, быстрого выполнения подключаемых функций, а также сокращения и упрощения кода.
Готовые методы, реализованные в данной библиотеке, принимают различные параметры для управления генератором последовательности, чтобы вернуть вызывающей подпрограмме необходимый набор объектов.
Документация и примеры кода здесь.
Что делает itertools?
Модуль itertools содержит строительные блоки итераторов, основанные на конструкциях из языков программирования APL, Haskell и SML. В itertools есть множество конструкций, например: циклы, комбинации значений, фильтрация последовательности и т.д.
Код, приведенный выше, показывает работу функции cycle с поочередным выводом.
Для чего нужен itertools?
itertools повышает эффективность работы с циклами и генераторами последовательностей объектов. Это достигается за счет лучшего управления памятью в программе, быстрого выполнения подключаемых функций, а также сокращения и упрощения кода.
Готовые методы, реализованные в данной библиотеке, принимают различные параметры для управления генератором последовательности, чтобы вернуть вызывающей подпрограмме необходимый набор объектов.
Документация и примеры кода здесь.
👍30❤5🔥1
Seaborn — библиотека для создания статистических графиков на Python.
Данная библиотека построена на основе matplotlib и тесно интегрируется со структурами данных pandas. Seaborn помогает вам изучить и понять данные.
Его функции построения графиков работают с датасетами и выполняют все необходимые преобразования для создания информативных графиков.
Синтаксис, ориентированный на набор данных, позволяет сосредоточиться на графиках, а не деталях их построения.
Чтобы нарисовать гистограмму в Seaborn нужно вызвать функцию barplot(), и передать ей категориальные и числовые переменные, которые нужно визуализировать, как это сделано в примере. Результат примера здесь :3
Когда вы работаете с данными можете столкнуться с ошибками и пропусками, которые в них имеются. К счастью, Seaborn защищает нас и автоматически применяет фильтр, который основан на вычислении среднего значения предоставленных данных.
Ставится командой ⚙
Документация и примеры кода здесь.
Данная библиотека построена на основе matplotlib и тесно интегрируется со структурами данных pandas. Seaborn помогает вам изучить и понять данные.
Его функции построения графиков работают с датасетами и выполняют все необходимые преобразования для создания информативных графиков.
Синтаксис, ориентированный на набор данных, позволяет сосредоточиться на графиках, а не деталях их построения.
Чтобы нарисовать гистограмму в Seaborn нужно вызвать функцию barplot(), и передать ей категориальные и числовые переменные, которые нужно визуализировать, как это сделано в примере. Результат примера здесь :3
Когда вы работаете с данными можете столкнуться с ошибками и пропусками, которые в них имеются. К счастью, Seaborn защищает нас и автоматически применяет фильтр, который основан на вычислении среднего значения предоставленных данных.
Ставится командой ⚙
pip install seaborn
Документация и примеры кода здесь.
👍24🤯3🔥1😢1
🐍 А вы знали? Выпуск №22
bool — логическая функция в Python, которая возвращает только два значения, а именно: True и False.
Функция bool может пригодится в проектах, где пустое значение не пропускается кодом.
В каких случаях функция bool() вернет True:
1. непустая строка (в том числе если это один или несколько пробелов)
2. ненулевое число (в том числе меньшее единицы, например -5)
3. непустой список/кортеж (даже если он содержит один пустой элемент, например пустой кортеж)
4. функция.
Иначе - bool вернёт False(не учитывая последний пункт разумеется)
Не смотря свою маленькую функциональность, bool может пригодится много где, что не может не радовать :)
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.
Для чего нужен SOLID?
Принципы SOLID направленны на содействие разработки более простого, надежного и обновляемого кода. Каждая буква в аббревиатуре SOLID соответствует одному принципу разработки.
При правильной реализации это делает ваш код более расширяемым, логичным и легким для чтения.
Для понимания SOLID принципов, вы должны хорошо понимать как используются интерфейсы.
SOLID-принципы расшифровываются следующим образом:
S – Принцип единственной ответственности.
O – Принцип открытости/закрытости.
L – Принцип подстановки Барбары Лисков.
I – Принцип разделения интерфейсов.
D – Принцип инверсии зависимостей.
Стоит отметить, что SOLID довольно глубокая тема в которую нужно погружаться глобально, поэтому попутно что либо изучая - вам будет сложнее понять сам SOLID.
🤔16👍6🔥1😱1🎉1
ООП (или же объективно ориентированное программирование) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
Для начала разберемся с формулировками:
Класс — тип, описывающий устройство объектов.
Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.
self — обязательный аргумент, содержащий в себе экземпляр класса, передающийся при вызове метода.
В Python всё является объектами - строки, списки, словари и всё остальное.
Но возможности ООП в Python этим не ограничены. Программист может написать свой тип данных (класс) и определить в нём свои методы.
Сверху приведён самый простой пример, где мы задаём класс с собственными методами а затем возвращаем и используем его :3
Стоит отметить, что ООП не является обязательным - мы можем пользоваться только встроенными объектами. Однако ООП полезно при долгосрочной разработке программы несколькими людьми, так как упрощает понимание кода.
Документация и примеры кода здесь.
Для начала разберемся с формулировками:
Класс — тип, описывающий устройство объектов.
Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.
self — обязательный аргумент, содержащий в себе экземпляр класса, передающийся при вызове метода.
В Python всё является объектами - строки, списки, словари и всё остальное.
Но возможности ООП в Python этим не ограничены. Программист может написать свой тип данных (класс) и определить в нём свои методы.
Сверху приведён самый простой пример, где мы задаём класс с собственными методами а затем возвращаем и используем его :3
Стоит отметить, что ООП не является обязательным - мы можем пользоваться только встроенными объектами. Однако ООП полезно при долгосрочной разработке программы несколькими людьми, так как упрощает понимание кода.
Документация и примеры кода здесь.
👍43❤1😱1
Узнайте все о NFT, блокчейне, метавселенных, искусственном интеллекте, нейронных сети, Data Science и кибернетике умных устройств в Telegram канале.
Реальные кейсы и интервью с экспертами из этих областей.
Реальные кейсы и интервью с экспертами из этих областей.
🤯4👍1😁1😱1
PEP-8 — это документ, который описывает соглашение о том, как писать код для Python, включая стандартную библиотеку, входящую в состав Python.
Кто создал PEP-8?
PEP 8 создан на основе рекомендаций Гвидо ван Россума с добавлениями от Барри. Если где-то возникал конфликт, мы выбирали стиль Гвидо. И, конечно, этот PEP может быть неполным (фактически, он, наверное, никогда не будет закончен).
Для чего он нужен?
Ключевая идея Гвидо такова: код читается намного больше раз, чем пишется. Собственно, рекомендации о стиле написания кода направлены на то, чтобы улучшить читаемость кода и сделать его согласованным между большим числом проектов.
PEP-8 это руководство о согласованности и единстве. Согласованность с этим руководством очень важна. Согласованность внутри одного проекта еще важнее. А согласованность внутри модуля или функции — самое важное.
Важно помнить, что иногда это руководство неприменимо, и нужно понимать, когда можно отойти от рекомендаций.
Ознакомиться с PEP-8 вы можете здесь :3
Кто создал PEP-8?
PEP 8 создан на основе рекомендаций Гвидо ван Россума с добавлениями от Барри. Если где-то возникал конфликт, мы выбирали стиль Гвидо. И, конечно, этот PEP может быть неполным (фактически, он, наверное, никогда не будет закончен).
Для чего он нужен?
Ключевая идея Гвидо такова: код читается намного больше раз, чем пишется. Собственно, рекомендации о стиле написания кода направлены на то, чтобы улучшить читаемость кода и сделать его согласованным между большим числом проектов.
PEP-8 это руководство о согласованности и единстве. Согласованность с этим руководством очень важна. Согласованность внутри одного проекта еще важнее. А согласованность внутри модуля или функции — самое важное.
Важно помнить, что иногда это руководство неприменимо, и нужно понимать, когда можно отойти от рекомендаций.
Ознакомиться с PEP-8 вы можете здесь :3
👍21🔥1😱1
🐍 А вы знали? Выпуск №23
Преобразование входящих данных в список.
Почему это происходит?
На фото выше показан сам кусочек кода, где мы указываем что функция input() для ввода данных, а затем функция split() для разделения входящих данных по пробелу будет в структуре данных list.
Интересный факт :3
Чтобы вывод был без скобок, запятых и других символов листа, перед переменной нужно поставить звёздочку: print(*lst). Это называется распаковка :)
Преобразование входящих данных в список.
Почему это происходит?
На фото выше показан сам кусочек кода, где мы указываем что функция input() для ввода данных, а затем функция split() для разделения входящих данных по пробелу будет в структуре данных list.
Интересный факт :3
Чтобы вывод был без скобок, запятых и других символов листа, перед переменной нужно поставить звёздочку: print(*lst). Это называется распаковка :)
👍28😁17🔥4❤2😱2
This media is not supported in your browser
VIEW IN TELEGRAM
Очень красивая анимация которая сделана при помощи таких модулей как manim и numpy 🔥
Такая на первый взгляд довольно сложная анимация занимает всего 15 строк кода 🤯
Как это работает?
С 6-ю по 7-ю строку мы создаём и задаём параметры кругу, красим его в розовый и задаём прозрачность 0.5.
Далее с 9-ю по 10-ю строку мы так же создаём фигуру, но на этот раз квадрат и задаём ему вращение с помощью числа пи поделенное на 4.
И в самом конце выводим на экран квадрат, заменяем квадрат на круг, а затем убираем квадрат. Всё очень просто :3
Стоит отметить, что manim это та библиотека, с помощью которой можно создавать математические анимации, а numpy имеет в себе математические функции, поэтому связка этих двух модулей не плохая идея 🤔
Ознакомиться с кодом вы можете здесь :)
Такая на первый взгляд довольно сложная анимация занимает всего 15 строк кода 🤯
Как это работает?
С 6-ю по 7-ю строку мы создаём и задаём параметры кругу, красим его в розовый и задаём прозрачность 0.5.
Далее с 9-ю по 10-ю строку мы так же создаём фигуру, но на этот раз квадрат и задаём ему вращение с помощью числа пи поделенное на 4.
И в самом конце выводим на экран квадрат, заменяем квадрат на круг, а затем убираем квадрат. Всё очень просто :3
Стоит отметить, что manim это та библиотека, с помощью которой можно создавать математические анимации, а numpy имеет в себе математические функции, поэтому связка этих двух модулей не плохая идея 🤔
Ознакомиться с кодом вы можете здесь :)
🔥42👍16😢3🤯2❤1🤔1😱1
🐍 Совет по Python №9.
dataclasses — встроенный модуль, который предоставляет декоратор и функции для автоматического добавления сгенерированных специальных методов в определяемые пользователем классы.
По умолчанию у dataclass есть методы init, repr и eq, поэтому их не нужно реализовывать самостоятельно.
На первом примере идентификаторы title и author используются несколько раз. Реальный класс же будет ещё содержать переопределенные методы eq и repr.
На втором примере мы автоматически получаем класс, с реализованными методами init, repr, и eq. Кроме того, это будет обычный класс и вы можете наследоваться от него.
Чем полезен dataclass?
Конструкции dataclass позволяют писать шаблонный код и упрощают процесс создания классов.
Стоит отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать Any из модуля typing.
Документация и примеры кода здесь :3
dataclasses — встроенный модуль, который предоставляет декоратор и функции для автоматического добавления сгенерированных специальных методов в определяемые пользователем классы.
По умолчанию у dataclass есть методы init, repr и eq, поэтому их не нужно реализовывать самостоятельно.
На первом примере идентификаторы title и author используются несколько раз. Реальный класс же будет ещё содержать переопределенные методы eq и repr.
На втором примере мы автоматически получаем класс, с реализованными методами init, repr, и eq. Кроме того, это будет обычный класс и вы можете наследоваться от него.
Чем полезен dataclass?
Конструкции dataclass позволяют писать шаблонный код и упрощают процесс создания классов.
Стоит отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать Any из модуля typing.
Документация и примеры кода здесь :3
👍30🔥1😱1
phonenumbers — это небольшая библиотека, для получения информации о номере телефона.
Что она умеет?
Данная библиотека имеет возможность узнать геолокацию номера телефона (страна, город), абонентом какого оператора он является, пройти проверку на валидацию и другое.
Сверху приведены два примера по валидации данных, но они возвращают разные значения
Почему так происходит?
Причина в том, что метод is_possible_number() быстро угадывает действительность телефонного номера, проверяя длину анализируемого номера, в то время как метод is_valid_number() выполняет полную проверку, проверяя длину, префикс телефонного номера и регион.
При итерации по большому списку телефонных номеров использование phonenumbers.is_possible_number() даст более быстрые результаты по сравнению с phonenumbers.is_valid_number() . Но, как мы видим здесь, эти результаты не всегда правильны. Так что используйте на свой страх и риск.
Ставится командой ⚙
Что она умеет?
Данная библиотека имеет возможность узнать геолокацию номера телефона (страна, город), абонентом какого оператора он является, пройти проверку на валидацию и другое.
Сверху приведены два примера по валидации данных, но они возвращают разные значения
Почему так происходит?
Причина в том, что метод is_possible_number() быстро угадывает действительность телефонного номера, проверяя длину анализируемого номера, в то время как метод is_valid_number() выполняет полную проверку, проверяя длину, префикс телефонного номера и регион.
При итерации по большому списку телефонных номеров использование phonenumbers.is_possible_number() даст более быстрые результаты по сравнению с phonenumbers.is_valid_number() . Но, как мы видим здесь, эти результаты не всегда правильны. Так что используйте на свой страх и риск.
Ставится командой ⚙
pip install phonenumbers
Краткая документация(с pypi) и примеры кода здесь.👍47🔥5😱2💯1