Forwarded from Python Academy
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
Помимо этого,
#validators
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.Помимо этого,
validators
позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.#validators
Forwarded from Python Academy
Копируем объекты
При присваивании переменной значения другой переменной, как правило, новый объект не создается, а копируется ссылка уже на существующий.
Если использовать функцию
В случае с
#copy
При присваивании переменной значения другой переменной, как правило, новый объект не создается, а копируется ссылка уже на существующий.
Если использовать функцию
copy
из стандартной библиотеки, то новый объект будет создан, но его ссылки на другие объекты останутся такими же.В случае с
deepcopy
произойдет рекурсивное копирование. Например, при таком копировании списка все его элементы также скопируются как новые объекты.#copy
Forwarded from Python School
Как эффективно по отношению к памяти сравнить два неупорядоченных списка
Давайте предположим, что у вас есть два списка, которые содержат одинаковые элементы. Однако эти элементы стоят в разном порядке.
Два списка содержат одни и те же элементы, а вот их порядок отличается. Давайте посмотрим, как мы можем удостовериться, что перед нами два одинаковых списка.
• Мы можем использовать метод collections.Counter
• Можно использовать sorted(), если объекты поддаются порядку.
Давайте предположим, что у вас есть два списка, которые содержат одинаковые элементы. Однако эти элементы стоят в разном порядке.
Два списка содержат одни и те же элементы, а вот их порядок отличается. Давайте посмотрим, как мы можем удостовериться, что перед нами два одинаковых списка.
• Мы можем использовать метод collections.Counter
• Можно использовать sorted(), если объекты поддаются порядку.
Forwarded from HABR FEED + OPENNET
[Перевод] Разбираемся с параллельными и конкурентными вычислениями в Python
https://habr.com/ru/post/581994/?utm_source=habrahabr&utm_medium=rss&utm_campaign=581994
Tags: Блог компании Wunder Fund, Python, Программирование, разработка, asyncio, parallelism, concurrency, multithreading
Author mr-pickles #habr
https://habr.com/ru/post/581994/?utm_source=habrahabr&utm_medium=rss&utm_campaign=581994
Tags: Блог компании Wunder Fund, Python, Программирование, разработка, asyncio, parallelism, concurrency, multithreading
Author mr-pickles #habr
Хабр
Разбираемся с параллельными и конкурентными вычислениями в Python
Я собираюсь рассказать историю о еде, раскрывающую различные возможности конкурентного и параллельного выполнения кода в Python. Прим. Wunder Fund: для задач, где не критичны экстремально низкие...
Forwarded from HABR FEED + OPENNET
SQL в SQLAlchemy
https://habr.com/ru/post/581304/?utm_source=habrahabr&utm_medium=rss&utm_campaign=581304
Tags: Блог компании ДомКлик, Python, PostgreSQL, SQL, python, оптимизация, запросы, sql, postgresql
Author alexey_and_kazakov #habr
https://habr.com/ru/post/581304/?utm_source=habrahabr&utm_medium=rss&utm_campaign=581304
Tags: Блог компании ДомКлик, Python, PostgreSQL, SQL, python, оптимизация, запросы, sql, postgresql
Author alexey_and_kazakov #habr
Хабр
SQL в SQLAlchemy
Меня зовут Алексей Казаков, я техлид команды «Клиентские коммуникации» в Домклик. По моему опыту подавляющее большинство приложений, взаимодействующих с базой данных, использовали для этого Object...
Forwarded from Python Academy
Именованные кортежи
Кстати,
Из названия понятно, что в основе этой структуры лежит привычный всем кортеж. Если кто не помнит, то это как список, но неизменяемый.
Функция
В аргументы мы передаем название нового класса и список атрибутов.
Здесь еще удобно то, что мастхэв функционал типа вывода на экран и сравнения похожих объектов также уже реализован.
#namedtuple
Кстати,
namedtuple
из collections
можно также использовать для хранения данных, как и классы данных, про которые я писал в предыдущем посте.Из названия понятно, что в основе этой структуры лежит привычный всем кортеж. Если кто не помнит, то это как список, но неизменяемый.
Функция
namedtuple
создает новые классы-заготовки, на основе которых уже можно создавать объекты для дальнейшего хранения данных.В аргументы мы передаем название нового класса и список атрибутов.
Здесь еще удобно то, что мастхэв функционал типа вывода на экран и сравнения похожих объектов также уже реализован.
#namedtuple
Forwarded from Python Academy
Классы данных
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
В результате вы автоматически получаете класс, с реализованными методами
#dataclass
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
dataclasses
содержит декоратор @dataclass
. С его использованием код будет выглядеть лаконично и коротко. Пример на картинке выше.Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
Any
из модуля typing
.В результате вы автоматически получаете класс, с реализованными методами
__init__
, __repr__
, __str__
и __eq__
. Кроме того, это будет обычный класс и вы можете наследоваться от него или добавлять произвольные методы.#dataclass
Forwarded from HABR FEED + OPENNET
Порараз бирацца: как мы учились писать автотесты на Python и что у нас получилось
https://habr.com/ru/post/582990/?utm_source=habrahabr&utm_medium=rss&utm_campaign=582990
Tags: Блог компании Магнит, Разработка веб-сайтов, Тестирование IT-систем, Тестирование веб-сервисов, pytest, selenium-webdriver, python, ci cd, devops
Author aleksandra_zay #habr
https://habr.com/ru/post/582990/?utm_source=habrahabr&utm_medium=rss&utm_campaign=582990
Tags: Блог компании Магнит, Разработка веб-сайтов, Тестирование IT-систем, Тестирование веб-сервисов, pytest, selenium-webdriver, python, ci cd, devops
Author aleksandra_zay #habr
Forwarded from Python School
Метод get() у словарей и его «дефолтный» результат.
Немножко теории: метод get() возвращает значение для искомого ключа. Если ключ недоступен, возвращает значение по умолчанию.
Метод get() возвращает значение по ключу если такой ключ присутсвует в списке, если его нет, то метод возвращает дефолтное значение.
Если же мы напишем nameforuserid.get(5454) без указания «дефолтного» значения, то функция вернет None. Довольно удобно и практично.
Немножко теории: метод get() возвращает значение для искомого ключа. Если ключ недоступен, возвращает значение по умолчанию.
Метод get() возвращает значение по ключу если такой ключ присутсвует в списке, если его нет, то метод возвращает дефолтное значение.
Если же мы напишем nameforuserid.get(5454) без указания «дефолтного» значения, то функция вернет None. Довольно удобно и практично.
Forwarded from Python Academy
Генерируем анекдоты
Не самый полезный, но весьма интересный пакет
Метод
Также можно указать категорию в аргументах — особенно классно заходят штуки про Чак Норриса с пометкой
#pyjokes
Не самый полезный, но весьма интересный пакет
pyjokes
выдает различные шутки и анекдоты на 6 языках. Но русский, к сожалению, в это число не входит.Метод
get_joke()
возвращает строку, которая хранит в себе случайную шутку. В аргументы можно указать язык, по умолчанию стоит английский.Также можно указать категорию в аргументах — особенно классно заходят штуки про Чак Норриса с пометкой
'chuck'
.#pyjokes
Forwarded from Властелин машин
Яндекс Дзен
Главные объекты для работы с датой и временем в Pandas
Модели машинного обучения, базирующиеся на временных рядах, требуют хороших навыков обработки даты и времени. В этой статье рассмотрим основные объекты, представляющие необходимый функционал в Pandas. Метки даты и времени Для меток даты и времени в Pandas…
Forwarded from Властелин машин
Яндекс Дзен
Интеллектуальное преобразование строк в формат даты и времени
Преобразование входных строк в формат даты и времени стоит в основе подготовки данных для ряда моделей машинного обучения. В этой статье рассмотрим инструментарий Pandas, позволяющий решить указанную задачу. Всю самую сложную работу сделает за вас функция…
Forwarded from Python Academy
Аннотация типов
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
И наконец в 3.10 на замену перечисления возможных принимаемых типов через
#typing #typealias
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
typing
, в которой содержались структуры нужные для создания дженериков для аннотирования переменных. Тогда синтаксис аннотирования работал при инициализации переменных. В последствии в версии 3.6 эта возможность была расширена и стало возможно объявлять типы переменных вообще в любом месте кода.В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
typing
'а (List
, Dict
, Tuple
...).И наконец в 3.10 на замену перечисления возможных принимаемых типов через
typing.Union
пришел опреатор |
(or
). Также в 3.10 был изменен синтаксис создания тайпалиасов, чтобы разграничить с присваиванием переменной, теперь лучше это делать непосредственно через TypeAlias
.#typing #typealias
Forwarded from Python Academy
Forwarded from DataWorkshop - AI & ML
4 октября 2021 вышел релиз Python - 3.10.
Приведем самые интересные обновления из последней версии:
1️⃣Улучшенные сообщения об ошибках
Более точные сообщения об ошибках для многих распространенных проблем.
2️⃣Предложены новые встроенные функции aiter() и anext() с реализацией асинхронных аналогов функциям iter() и next().
3️⃣Реализованы операторы "match" и "case" для сопоставления с образцом, которые позволяют улучшить читаемость кода, упростить сопоставление произвольных Python-объектов и повысить надёжность кода.
4️⃣Предоставлена возможность использования круглых скобок в операторе with для разнесения на несколько строк определения коллекции контекстных менеджеров.
5️⃣Для отладочных инструментов и профилировщиков обеспечено указание в событиях трассировки точных номеров строк выполненного кода.
6️⃣ В модулях hashlib и ssl добавлена поддержка OpenSSL 3.0.0 и прекращена поддержка версий OpenSSL меньше 1.1.1.
7️⃣ Объявлен устаревшим модуль distutils, который запланирован для удаления в Python 3.12.
Приведем самые интересные обновления из последней версии:
1️⃣Улучшенные сообщения об ошибках
Более точные сообщения об ошибках для многих распространенных проблем.
2️⃣Предложены новые встроенные функции aiter() и anext() с реализацией асинхронных аналогов функциям iter() и next().
3️⃣Реализованы операторы "match" и "case" для сопоставления с образцом, которые позволяют улучшить читаемость кода, упростить сопоставление произвольных Python-объектов и повысить надёжность кода.
4️⃣Предоставлена возможность использования круглых скобок в операторе with для разнесения на несколько строк определения коллекции контекстных менеджеров.
5️⃣Для отладочных инструментов и профилировщиков обеспечено указание в событиях трассировки точных номеров строк выполненного кода.
6️⃣ В модулях hashlib и ssl добавлена поддержка OpenSSL 3.0.0 и прекращена поддержка версий OpenSSL меньше 1.1.1.
7️⃣ Объявлен устаревшим модуль distutils, который запланирован для удаления в Python 3.12.
Forwarded from Python Academy
Аннотация типов
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
И наконец в 3.10 на замену перечисления возможных принимаемых типов через
#typing #typealias
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой
typing
, в которой содержались структуры нужные для создания дженериков для аннотирования переменных. Тогда синтаксис аннотирования работал при инициализации переменных. В последствии в версии 3.6 эта возможность была расширена и стало возможно объявлять типы переменных вообще в любом месте кода.В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур
typing
'а (List
, Dict
, Tuple
...).И наконец в 3.10 на замену перечисления возможных принимаемых типов через
typing.Union
пришел опреатор |
(or
). Также в 3.10 был изменен синтаксис создания тайпалиасов, чтобы разграничить с присваиванием переменной, теперь лучше это делать непосредственно через TypeAlias
.#typing #typealias
Forwarded from Python Academy
Операции с zip архивами
Для работы с
Просмотреть содержимое архива можно с помощью функции
Также этот модуль позволяет создавать свои
#zipfile
Для работы с
zip
файлами можно использовать встроенный модуль zipfile
. Если кто не помнит, то zip
файл — это архив, содержащий сжатые файлы. Просмотреть содержимое архива можно с помощью функции
printdir
, а извлечь все файлы можно вызвав extractfile
. Также этот модуль позволяет создавать свои
zip
архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию. #zipfile
Forwarded from Python вопросы на собеседовании с ответами
Forwarded from Python вопросы на собеседовании с ответами
Forwarded from [404] — программирование
💻 Практика программирования на Python 3
Невероятно полезные лекции от Тимофея Хирьянова – преподавателя кафедры информатики МФТИ, который также работает в онлайн-школе Foxford.
1. Лекция №1 — [1:21:58]
2. Лекция №2 — [1:15:52]
3. Лекция №3 —[1:17:38]
4. Лекция №4 — [1:14:31]
5. Лекция №5 — [1:16:49]
6. Лекция №6 — [1:10:56]
7. Лекция №7 — [1:07:17]
8. Лекция №8 — [1:20:17]
9. Лекция №9 — [1:22:10]
10. Лекция №10 — [1:17:44]
11. Лекция №11 — [1:15:27]
12. Лекция №12 — [1:22:16]
13. Лекция №13 — [1:16:45]
14. Лекция №14 — [52:20]
Перейти к плейлисту
#видео
Невероятно полезные лекции от Тимофея Хирьянова – преподавателя кафедры информатики МФТИ, который также работает в онлайн-школе Foxford.
1. Лекция №1 — [1:21:58]
2. Лекция №2 — [1:15:52]
3. Лекция №3 —[1:17:38]
4. Лекция №4 — [1:14:31]
5. Лекция №5 — [1:16:49]
6. Лекция №6 — [1:10:56]
7. Лекция №7 — [1:07:17]
8. Лекция №8 — [1:20:17]
9. Лекция №9 — [1:22:10]
10. Лекция №10 — [1:17:44]
11. Лекция №11 — [1:15:27]
12. Лекция №12 — [1:22:16]
13. Лекция №13 — [1:16:45]
14. Лекция №14 — [52:20]
Перейти к плейлисту
#видео