Использование контекстного менеджера как таймера
Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.
Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:
• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками
Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.
Обычно контекстный менеджер реализуется как класс с методами
Но есть более лаконичный способ — использовать декоратор
Пример как использовать контекстный менеджер как таймер прикрепил✌️
👉 @PythonPortal
Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.
Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:
• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками
with
гарантирует, что инициализация и очистка ресурса будут выполнены автоматически, даже если в блоке возникнет исключение. Это делает код чище и надёжнее.Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.
Обычно контекстный менеджер реализуется как класс с методами
__enter__
и __exit__
Но есть более лаконичный способ — использовать декоратор
@contextmanager
из модуля contextlib, чтобы писать генераторные менеджеры без лишнего шаблонного кода.Пример как использовать контекстный менеджер как таймер прикрепил
Please open Telegram to view this post
VIEW IN TELEGRAM
Топ-10 распространённых магических методов в Python
👉 @PythonPortal
__init__(self)
– Инициализация нового объекта__str__(self
) – Строковое представление__repr__(self)
– Представление для отладки__len__(self)
– Длина объекта__getitem__(self, key)
– Доступ к элементу по индексу/ключу__setitem__(self, key, value)
– Установка значения по индексу/ключу__delitem__(self, key)
– Удаление элемента по ключу__eq__(self, other)
– Проверка на равенство__add__(self, other)
– Поведение оператора сложения +
__call__(self, ...)
– Делает экземпляр вызываемым как функцияPlease open Telegram to view this post
VIEW IN TELEGRAM
Совет по Python:
Функция
Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.
Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.
Когда
В примере переменные
👉 @PythonPortal
Функция
locals()
Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.
Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.
Когда
locals()
вызывается внутри функции, она возвращает словарь со всеми локальными переменными, определёнными в рамках этой функции.В примере переменные
z
и x
определены локально внутри функции. Переменная y = 20
является глобальной и не относится к области видимости my_func(). Поэтому locals() внутри my_func
не включает y
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на прикольный ресурс для изучения SQL
Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.
Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике📝
👉 @PythonPortal
Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.
Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Python:
При объединении итерируемых объектов разной длины используй
Используй🤵
👉 @PythonPortal
При объединении итерируемых объектов разной длины используй
itertools.zip_longest()
вместо zip()
, чтобы все элементы были объединены в пары.zip()
объединяет элементы, пока один из итерируемых не закончится:>>> list(zip(letters, numbers))
[('a', 1), ('b', 2)]
zip_longest()
продолжает объединение до конца самого длинного итерируемого объекта:>>> list(zip_longest(letters, numbers))
[('a', 1), ('b', 2), ('c', None)]
fillvalue
позволяет указать значение-заполнитель для отсутствующих элементов:>>> list(zip_longest(letters, numbers, fillvalue='N/A'))
[('a', 1), ('b', 2), ('c', 'N/A')]
Используй
zip_longest
, когда важно сохранить все данные, даже при разной длине итерируемых объектов Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь понять, как работает Git — напиши свой.
Линус Торвальдс прославился тем, что написал Git за один день на C, уложившись в 1000 строк — и закоммитил его через Git. Сейчас проект насчитывает >500k строк, но его ядро можно реализовать за одни выходные.
Write Yourself a Git – пошаговое руководство, помогающее создать упрощённую версию Git на Python. Автор показывает, как за ~978 строк кода реализовать ключевые команды Git:
Git кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код😡
👉 @PythonPortal
Линус Торвальдс прославился тем, что написал Git за один день на C, уложившись в 1000 строк — и закоммитил его через Git. Сейчас проект насчитывает >500k строк, но его ядро можно реализовать за одни выходные.
Write Yourself a Git – пошаговое руководство, помогающее создать упрощённую версию Git на Python. Автор показывает, как за ~978 строк кода реализовать ключевые команды Git:
init, add, commit, log, checkout, status
и другие — при этом всё остаётся совместимым с настоящим GitGit кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код
Please open Telegram to view this post
VIEW IN TELEGRAM
Многие разработчики на Python считают метод
Настоящий конструктор в Python — это метод
Сначала добавим несколько print-вызовов в метод
Теперь добавим метод
Если запустить этот код, станет видно, что первым вызывается именно метод
Хочу отметить, что в большинстве случаев вам не придётся использовать метод
Так что продолжайте спокойно использовать проверенный метод😄
👉 @PythonPortal
__init__()
конструктором, но на самом деле это не так.Настоящий конструктор в Python — это метод
__new__()
. Давайте разберёмся, как это доказать, на небольшом примере.Сначала добавим несколько print-вызовов в метод
__init__()
, чтобы понять, что происходит при создании экземпляра класса: (2 фото)Теперь добавим метод
__new__()
и посмотрим, вызывается ли __init__()
до или после __new__()
. (3 фото)Если запустить этот код, станет видно, что первым вызывается именно метод
__new__()
Хочу отметить, что в большинстве случаев вам не придётся использовать метод
__new__()
в своём коде. На практике он применяется почти исключительно в метапрограммировании, фабричных функциях и при работе с API — по крайней мере, из того, что мне доводилось видеть.Так что продолжайте спокойно использовать проверенный метод
__init__()
— он по-прежнему отлично справляется со своей задачей Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Google представила мощного AI-ассистента для работы в терминале — Gemini CLI
На текущем этапе инструмент фактически доступен бесплатно, работает на базе модели Gemini 2.5 Pro, с такими лимитами:
- До 60 запросов в минуту
- До 1000 запросов в день
Для личного использования этих ограничений более чем достаточно. На фоне подписок по $10–20 в месяц на другие AI-инструменты для разработки — Google действительно щедр.😮
• Контекст до 1 млн токенов
• Мультимодальность: UI-скетчи, PDF → код
• Автопоиск PR и merge-автоматизация
• Поддержка MCP-протокола
• Встроенный Google Search
👉 @PythonPortal
На текущем этапе инструмент фактически доступен бесплатно, работает на базе модели Gemini 2.5 Pro, с такими лимитами:
- До 60 запросов в минуту
- До 1000 запросов в день
Для личного использования этих ограничений более чем достаточно. На фоне подписок по $10–20 в месяц на другие AI-инструменты для разработки — Google действительно щедр.
• Контекст до 1 млн токенов
• Мультимодальность: UI-скетчи, PDF → код
• Автопоиск PR и merge-автоматизация
• Поддержка MCP-протокола
• Встроенный Google Search
Please open Telegram to view this post
VIEW IN TELEGRAM
Преобразование систем счисления в Python с использованием встроенных функций
🔹 Из десятичной в двоичную
🔹 Из двоичной в десятичную
🔹 Из десятичной в восьмеричную
🔹 Из восьмеричной в десятичную
🔹 Из десятичной в шестнадцатеричную
🔹 Из шестнадцатеричной в десятичную
👉 @PythonPortal
decimal_number = 10
binary_number = bin(decimal_number)
print(binary_number)
# Вывод: '0b1010'
binary_number = '1010'
decimal_number = int(binary_number, 2)
print(decimal_number)
# Вывод: 10
decimal_number = 10
octal_number = oct(decimal_number)
print(octal_number)
# Вывод: '0o12'
octal_number = '12'
decimal_number = int(octal_number, 8)
print(decimal_number)
# Вывод: 10
decimal_number = 10
hex_number = hex(decimal_number)
print(hex_number)
# Вывод: '0xa'
hex_number = 'a'
decimal_number = int(hex_number, 16)
print(decimal_number)
# Вывод: 10
Please open Telegram to view this post
VIEW IN TELEGRAM
Наткнулся на годный репозиторий для изучения Data Science с Python 😮
Это полный текст книги Python Data Science Handbook в формате Jupyter-ноутбуков — прямо на GitHub
Можно изучать NumPy, Pandas, Matplotlib, Scikit-Learn и другие библиотеки прямо в интерактивном формате. Подойдёт и для новичков, и как шпаргалка для практиков
👉 @PythonPortal
Это полный текст книги Python Data Science Handbook в формате Jupyter-ноутбуков — прямо на GitHub
Можно изучать NumPy, Pandas, Matplotlib, Scikit-Learn и другие библиотеки прямо в интерактивном формате. Подойдёт и для новичков, и как шпаргалка для практиков
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Всё, что нужно для трассировки LLM-приложений это Python-декоратор (open-source).
Большинство метрик для LLM оценивают приложение как чёрный ящик от начала до конца.
Но LLM-приложения требуют оценки и трассировки на уровне компонентов, ведь ошибка может быть где угодно: в ретривере, вызове инструмента или самом LLM.
С помощью deepeval это делается всего в 3 строки кода:
– Используй декоратор
– Привязывай метрики к каждому из компонентов
– Получай визуальный разбор — что работает, а что ломается
И всё. Переписывать существующий код не нужно.😄
Пример есть выше для RAG-приложения.
Deepeval — полностью open-source, уже 8500+ звёзд на GitHub. Можно легко задеплоить у себя. Все данные останутся под твоим контролем.
👉 @PythonPortal
Большинство метрик для LLM оценивают приложение как чёрный ящик от начала до конца.
Но LLM-приложения требуют оценки и трассировки на уровне компонентов, ведь ошибка может быть где угодно: в ретривере, вызове инструмента или самом LLM.
С помощью deepeval это делается всего в 3 строки кода:
– Используй декоратор
@observe
, чтобы трассировать отдельные компоненты (инструменты, ретриверы, генераторы)– Привязывай метрики к каждому из компонентов
– Получай визуальный разбор — что работает, а что ломается
И всё. Переписывать существующий код не нужно.
Пример есть выше для RAG-приложения.
Deepeval — полностью open-source, уже 8500+ звёзд на GitHub. Можно легко задеплоить у себя. Все данные останутся под твоим контролем.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Практический Python от Дэвида Бизли (один из самых уважаемых экспертов по Python, автор книги "Python Essential Reference")
Курс учит не просто писать код, а думать как интерпретатор, избегая фреймворков. Всё на голом Python, от функций до генераторов и итераторов
Материал подаётся плотно, с минимальной теорией и сразу с практикой.
Курс доступен онлайн, без регистрации и бесплатно, включая слайды, заметки и упражнения🤔
Ссылка на курс: тык
👉 @PythonPortal
Курс учит не просто писать код, а думать как интерпретатор, избегая фреймворков. Всё на голом Python, от функций до генераторов и итераторов
Материал подаётся плотно, с минимальной теорией и сразу с практикой.
Курс доступен онлайн, без регистрации и бесплатно, включая слайды, заметки и упражнения
Ссылка на курс: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
В Яндекс 360 мы создаём технологии, которые работают в основе более чем 13 сервисов, включая Диск, Почту, Телемост, Мессенджер и другие.
Открывайте Техножурнал, чтобы узнать:
— Как мы балансируем нагрузку в 300k RPS в Яндекс Мессенджере,
— Как подружили MongoDB и PostgreSQL в Диске,
— Какие в команде культура и ценности.
А ещё — как мы внедряли DDD, кто такой Technical Owner, как управляем 650+ шардами PostgreSQL и как подходим к проектированию архитектуры наших сервисов.
@yandex360team
Please open Telegram to view this post
VIEW IN TELEGRAM
Text-to-Speech нового уровня
Chatterbox — первый open-source TTS, готовый к продакшену.
➣ Задержки менее 200 мс
➣ Синтеза речи нулевого выстрела (zero-shot) на уровне SoTA
➣ Управления эмоциями и выразительностью
Полностью open-source😱
👉 @PythonPortal
Chatterbox — первый open-source TTS, готовый к продакшену.
➣ Задержки менее 200 мс
➣ Синтеза речи нулевого выстрела (zero-shot) на уровне SoTA
➣ Управления эмоциями и выразительностью
Полностью open-source
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Pytest:
Используйте
Декоратор
В примере, тест пропускается, если используется Python версии ниже 3.9, потому что оператор объединения словарей (|) появился только в Python 3.9.
Аргумент
👉 @PythonPortal
Используйте
@pytest.mark.skipif
, чтобы условно пропускать тесты в зависимости от определённых условий — например, платформы, наличия зависимостей или значений переменных окруженияДекоратор
@pytest.mark.skipif(...)
указывает Pytest пропустить выполнение теста, если условие истинно.В примере, тест пропускается, если используется Python версии ниже 3.9, потому что оператор объединения словарей (|) появился только в Python 3.9.
Аргумент
reason
сообщает причину пропуска, которая отображается в отчёте Pytest.Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это библия для разработчиков: вся нужная документация в одном месте
✓ Языки программирования, библиотеки, фреймворки
✓ Поиск сразу по всем источникам
✓ Всегда актуальные версии
Дока обновляется каждый день. Открывай в одной вкладке хоть Python, Postgres и Bash
Никакой рекламы, всё супербыстро → devdocs․io😱
👉 @PythonPortal
✓ Языки программирования, библиотеки, фреймворки
✓ Поиск сразу по всем источникам
✓ Всегда актуальные версии
Дока обновляется каждый день. Открывай в одной вкладке хоть Python, Postgres и Bash
Никакой рекламы, всё супербыстро → devdocs․io
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это одно из самых безумных расширений для VS Code, что я видел за последнее время
GitLantis визуализирует структуру проекта в виде 3D-подводного мира. Да, буквально — ты «плаваешь» по директориям, как по рифам в Атлантике. Атмосферно и безумно красиво😮
👉 @PythonPortal
GitLantis визуализирует структуру проекта в виде 3D-подводного мира. Да, буквально — ты «плаваешь» по директориям, как по рифам в Атлантике. Атмосферно и безумно красиво
Please open Telegram to view this post
VIEW IN TELEGRAM