Стартовал набор в ШАД — успейте подать заявку!
Технологии меняют нашу реальность, но за их развитием стоят люди, которые умеют находить нестандартные решения. И именно в Школе анализа данных Яндекса готовят таких специалистов! Здесь амбициозные и увлечённые студенты:
- погружаются в машинное обучение, Data Science и искусственный интеллект;
- перенимают опыт экспертов из индустрии;
- учатся решать задачи, стоящие перед ведущими IT-компаниями и исследовательскими центрами.
Учёба в ШАДе — это серьёзный вызов даже для тех, кто уже знаком с анализом данных. Поступить непросто, но если вы готовы к интенсивной нагрузке, нестандартным кейсам и полной пересборке своего мышления — это место для вас! За 2 года обучения вы получите инструменты и навыки, которые позволят работать над сложнейшими задачами индустрии, запускать собственные проекты и двигать науку вперёд.
Занятия полностью бесплатны и проходят по вечерам. Если в вашем городе нет филиала, можно учиться онлайн. Готовы бросить вызов данности? Тогда подавайте заявку до 4 мая!
Технологии меняют нашу реальность, но за их развитием стоят люди, которые умеют находить нестандартные решения. И именно в Школе анализа данных Яндекса готовят таких специалистов! Здесь амбициозные и увлечённые студенты:
- погружаются в машинное обучение, Data Science и искусственный интеллект;
- перенимают опыт экспертов из индустрии;
- учатся решать задачи, стоящие перед ведущими IT-компаниями и исследовательскими центрами.
Учёба в ШАДе — это серьёзный вызов даже для тех, кто уже знаком с анализом данных. Поступить непросто, но если вы готовы к интенсивной нагрузке, нестандартным кейсам и полной пересборке своего мышления — это место для вас! За 2 года обучения вы получите инструменты и навыки, которые позволят работать над сложнейшими задачами индустрии, запускать собственные проекты и двигать науку вперёд.
Занятия полностью бесплатны и проходят по вечерам. Если в вашем городе нет филиала, можно учиться онлайн. Готовы бросить вызов данности? Тогда подавайте заявку до 4 мая!
Давай разберемся, как это работает:
Что такое Генератор?
Функция
my_generator_function
является генератором, потому что она использует ключевое слово yield
.В отличие от обычной функции, которая выполняет весь код и возвращает одно значение через return, генератор "приостанавливается" на каждом yield, возвращая указанное значение.
При следующем вызове он возобновляет работу с того места, где остановился.
Как работает
yield
:Когда вы вызываете
gen = my_generator_function()
, код внутри функции не выполняется. Создается специальный объект-генератор (
gen
).Первый вызов
next(gen)
заставляет функцию выполниться до первого yield 1. Функция возвращает 1 и приостанавливается.Второй вызов next(gen) возобновляет выполнение с точки после yield 1 и доходит до yield 2. Функция возвращает 2 и снова приостанавливается.
Именно поэтому print(next(gen), next(gen)) выводит 1 2.
Как работает return в генераторе:
Когда поток выполнения внутри генератора доходит до оператора return (в нашем случае return 73) или просто до конца функции без явного return, генератор считается завершенным.
Важно: Значение, указанное в return (здесь 73), не возвращается как обычное значение через yield. Вместо этого генератор выбрасывает (raises) специальное исключение: StopIteration.
Этот механизм StopIteration - стандартный способ в Python сигнализировать, что итератор (а генератор - это тип итератора) исчерпан.
Перехват StopIteration и получение значения:
В правой части кода мы пытаемся вызвать next(gen) еще раз.
Генератор возобновляется после yield 2, доходит до return 73 и выбрасывает StopIteration.
Конструкция try...except StopIteration as err: перехватывает это исключение.
Ключевой момент (показан стрелкой на картинке): Значение, которое было указано в операторе return генератора (73), становится доступным как атрибут .value пойманного исключения StopIteration.
Поэтому
print(err.value) в
ыводит # 73.
Итог:
Teturn в генераторе не производит очередное значение, а завершает его работу. При этом значение из return "упаковывается" в исключение StopIteration, сигнализирующее об окончании, и его можно извлечь из атрибута .value этого исключения, если перехватить его вручную.
Стандартный цикл for item in generator(): в Python автоматически обрабатывает StopIteration (просто завершает цикл) и не дает прямого доступа к err.value. Поэтому для демонстрации этого механизма и получения возвращаемого значения используется явный вызов next() внутри блока try...except.
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machinelearning
Инструмент позволяет вводить "пошлины" на Python-библиотеки, замедляя загрузку определённых пакетов, чтобы подчеркнуть идею "экономического протекционизма" в коде.
Имитация тарифов на импорты: пользователь может установить "тарифы" (в процентах) на определённые пакеты, например:
import tariff
tariff.set({
"numpy": 50, # 50% тариф на numpy
"pandas": 200, # 200% тариф на pandas
"requests": 150 # 150% тариф на requests
})
▪ Замедление импорта: при импорте указанных пакетов время загрузки увеличивается пропорционально установленному тарифу.
Вывод сообщений: при каждом "обложенном тарифом" импорте выводится сообщение в стиле политической риторики, например:
JUST IMPOSED a 50% TARIFF on numpy! Original import took 45000 us, now takes 67500 us. American packages are WINNING AGAIN! #MIPA
Библиотека использует monkey-patching для перехвата и модификации процесса импорта.
▪Github
@ai_machinelearning_big_data
#fun #python
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Tracecat — open-source платформа для автоматизации безопасности. Этот проект предлагает YAML-шаблоны для создания workflow с визуальным редактором, упрощая автоматизацию рутинных задач.
Инструмент позволяет интегрировать Temporal для надёжного выполнения сценариев и поддержка MITRE D3FEND. Локальный запуск возможен через Docker Compose, а для продакшена есть Terraform-конфиги для AWS Fargate.
🤖 GitHub
@pythonl
Инструмент позволяет интегрировать Temporal для надёжного выполнения сценариев и поддержка MITRE D3FEND. Локальный запуск возможен через Docker Compose, а для продакшена есть Terraform-конфиги для AWS Fargate.
🤖 GitHub
@pythonl
This media is not supported in your browser
VIEW IN TELEGRAM
Новый Function (fxn) — фреймворк, который компилирует Python-функции в нативный код с производительностью, сравнимой с Rust.
🧠 Как это работает?
- Использует символическое трассирование на CPython для анализа функций
- Генерирует промежуточное представление (IR)
- Транслирует IR в C++ или Rust, а затем компилирует в бинарный код
- Поддерживает платформы: Linux, Android, WebAssembly и др.
📦 Пример:
@compile
def fma(x: float, y: float, z: float) -> float:
return x * y + z
После компиляции вы получаете нативный бинарник, который можно запускать без интерпретатора Python.
🔗 Подробнее
🔗 Github
@pythonl
#Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm
Please open Telegram to view this post
VIEW IN TELEGRAM
Поздравляем, вы на 1 шаг ближе к работе мечты 🥳
Осталось только прочитать этот пост, подписаться на канал и откликнуться на вакансию 😉
Avito Career — место, где Авито делится актуальными вакансиями и стажировками для Python-разработчиков.
Подписывайтесь, чтобы найти ту самую работу ✨
Осталось только прочитать этот пост, подписаться на канал и откликнуться на вакансию 😉
Avito Career — место, где Авито делится актуальными вакансиями и стажировками для Python-разработчиков.
Подписывайтесь, чтобы найти ту самую работу ✨
🐍 Dulwich — проект, предлагающий альтернативу классическим библиотекам вроде GitPython и pygit2. Это полностью Python-реализация Git-клиента без зависимостей от нативного Git.
Инструмент поддерживает как низкоуровневые операции с репозиториями, так и сложные команды, имитирующие интерфейс командной строки Git. Для тех, кому важна производительность, есть опциональные Rust-расширения.
🤖 GitHub
@pythonl
Инструмент поддерживает как низкоуровневые операции с репозиториями, так и сложные команды, имитирующие интерфейс командной строки Git. Для тех, кому важна производительность, есть опциональные Rust-расширения.
🤖 GitHub
@pythonl
С помощью инфографики, наглядных визуализаций и коротких обучающих видео вы изучите все ключевые концепции работы с Docker и методики DevOps.
Прокачать скиллы: t.me/DevopsDocker
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Python-разработчик — от основ до синьора.
Если вы ищете структурированный roadmap в бэкенд-разработке на Python, обратите внимание на дорожную карту от Boot.dev. Она начинается с базовых навыков (Linux, Git, ООП) и ведёт к сложным темам: алгоритмы, HTTP-серверы, безопасность и DevOps-инструменты.
Создатели сделали акцент на практике. После каждого теоретического блока предлагается создать проект: от простого бота до агрегатора блогов с использованием SQL и облачных хранилищ.
🤖 GitHub
@python_job_interview
Если вы ищете структурированный roadmap в бэкенд-разработке на Python, обратите внимание на дорожную карту от Boot.dev. Она начинается с базовых навыков (Linux, Git, ООП) и ведёт к сложным темам: алгоритмы, HTTP-серверы, безопасность и DevOps-инструменты.
Создатели сделали акцент на практике. После каждого теоретического блока предлагается создать проект: от простого бота до агрегатора блогов с использованием SQL и облачных хранилищ.
🤖 GitHub
@python_job_interview
Вы когда-нибудь хотели сделать свою собственную систему рекомендаций фильмов? 🎬
Приходите на бесплатный вебинар, где Савелий Батурин, Senior ML-Engineer и преподаватель курса по ML школы Simulative в прямом эфире покажет как построить рекомендательную систему фильмов на Kaggle.
Что будем делать на вебинаре:
Вебинар будет интересен как новичкам, так и уже опытным специалистам
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Основные нововведения в Django 5.2
1. 📦 Автоматический импорт моделей в интерактивной оболочке
Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются.
Это упрощает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробностей об импортированных объектах можно использовать флаг -v 2.
2. 🔗 Поддержка составных первичных ключей
Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.
3. 🧩 Гибкая настройка BoundField в формах
Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это предоставляет разработчикам более тонкий контроль над отображением и поведением форм.
4. ⚡ Расширенная асинхронная поддержка
Django продолжает движение в сторону асинхронности, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.
5. 🎨 Новые виджеты форм и улучшения интерфейса
Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.
Bastaki Software Solutions L.L.C-FZ
6. 🗃️ Улучшения в работе с базой данных
Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve.
По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3.
Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.
🔧 Совместимость и поддержка
Django 5.2 поддерживает Python версий 3.10–3.13.
С выходом этой версии, основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2.
Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.
📥 Обновление и ресурсы
Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI.
Полные примечания к релизу доступны в официальной документации.
Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade.
Django Project
Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии.
📌 Релиз
@pythonl
1. 📦 Автоматический импорт моделей в интерактивной оболочке
Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются.
Это упрощает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробностей об импортированных объектах можно использовать флаг -v 2.
2. 🔗 Поддержка составных первичных ключей
Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений.
3. 🧩 Гибкая настройка BoundField в формах
Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это предоставляет разработчикам более тонкий контроль над отображением и поведением форм.
4. ⚡ Расширенная асинхронная поддержка
Django продолжает движение в сторону асинхронности, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений.
5. 🎨 Новые виджеты форм и улучшения интерфейса
Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями.
Bastaki Software Solutions L.L.C-FZ
6. 🗃️ Улучшения в работе с базой данных
Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve.
По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3.
Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке.
🔧 Совместимость и поддержка
Django 5.2 поддерживает Python версий 3.10–3.13.
С выходом этой версии, основная поддержка Django 5.1 завершена. Последний минорный релиз 5.1.8, также содержащий обновления безопасности, был выпущен одновременно с 5.2.
Django 5.0 достиг конца расширенной поддержки. Последний релиз безопасности, 5.0.14, также был выпущен сегодня. Рекомендуется обновиться до версии 5.1 или более новой.
📥 Обновление и ресурсы
Загрузить Django 5.2 можно с официальной страницы загрузки или через PyPI.
Полные примечания к релизу доступны в официальной документации.
Для автоматического обновления кода и устранения устаревших конструкций можно использовать инструмент django-upgrade.
Django Project
Django 5.2 предлагает множество улучшений, направленных на упрощение разработки и повышение производительности приложений. Рекомендуется ознакомиться с новыми возможностями и планировать обновление своих проектов для использования всех преимуществ этой версии.
📌 Релиз
@pythonl