Python Portal
58.6K subscribers
2.04K photos
183 videos
48 files
576 links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Это что игра What It Prints?

Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод

Для самопроверки самое то 💯

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44🔥7😢64
This media is not supported in your browser
VIEW IN TELEGRAM
Auto PY to EXE — это open-source инструмент для упаковки Python-проектов в исполняемые файлы, который гораздо проще в использовании, чем pyfuze

Он предоставляет наглядный графический интерфейс: просто выбираешь скрипт, настраиваешь нужные параметры и нажимаешь кнопку запуска —> весь процесс упаковки проходит без необходимости возиться с командной строкой.

Дополнительно можно сохранять часто используемые настройки, отслеживать процесс в реальном времени и просматривать подробные логи. 📖

Инструмент кроссплатформенный, поддерживает Windows, macOS и Linux, а установка через pip максимально простая:

pip install auto-py-to-exe


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🔥149
Использование контекстного менеджера как таймера

Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.

Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:

• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками

with гарантирует, что инициализация и очистка ресурса будут выполнены автоматически, даже если в блоке возникнет исключение. Это делает код чище и надёжнее.

Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.

Обычно контекстный менеджер реализуется как класс с методами __enter__ и __exit__

Но есть более лаконичный способ — использовать декоратор @contextmanager из модуля contextlib, чтобы писать генераторные менеджеры без лишнего шаблонного кода.

Пример как использовать контекстный менеджер как таймер прикрепил ✌️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2913🔥4
Топ-10 распространённых магических методов в Python

__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, ...) – Делает экземпляр вызываемым как функция

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝3125👍15🤣5🔥2
Совет по Python:

Функция locals()

Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.

Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.

Когда locals() вызывается внутри функции, она возвращает словарь со всеми локальными переменными, определёнными в рамках этой функции.

В примере переменные z и x определены локально внутри функции. Переменная y = 20 является глобальной и не относится к области видимости my_func(). Поэтому locals() внутри my_func не включает y

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5417🔥3🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на прикольный ресурс для изучения SQL

Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.

Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике 📝

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4911
Совет по Python:

При объединении итерируемых объектов разной длины используй 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, когда важно сохранить все данные, даже при разной длине итерируемых объектов 🤵

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4018👍9🏆5
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: init, add, commit, log, checkout, status и другие — при этом всё остаётся совместимым с настоящим Git

Git кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код 😡

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
55👍18🔥10
Многие разработчики на Python считают метод __init__() конструктором, но на самом деле это не так.

Настоящий конструктор в Python — это метод __new__(). Давайте разберёмся, как это доказать, на небольшом примере.

Сначала добавим несколько print-вызовов в метод __init__(), чтобы понять, что происходит при создании экземпляра класса: (2 фото)

Теперь добавим метод __new__() и посмотрим, вызывается ли __init__() до или после __new__(). (3 фото)

Если запустить этот код, станет видно, что первым вызывается именно метод __new__()

Хочу отметить, что в большинстве случаев вам не придётся использовать метод __new__() в своём коде. На практике он применяется почти исключительно в метапрограммировании, фабричных функциях и при работе с API — по крайней мере, из того, что мне доводилось видеть.

Так что продолжайте спокойно использовать проверенный метод __init__() — он по-прежнему отлично справляется со своей задачей 😄

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3616💊8🔥5🤔2👀1
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
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍10🔥6🤔1
Преобразование систем счисления в Python с использованием встроенных функций

🔹Из десятичной в двоичную

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


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
39👍17🔥8🏆2
Наткнулся на годный репозиторий для изучения Data Science с Python 😮

Это полный текст книги Python Data Science Handbook в формате Jupyter-ноутбуков — прямо на GitHub

Можно изучать NumPy, Pandas, Matplotlib, Scikit-Learn и другие библиотеки прямо в интерактивном формате. Подойдёт и для новичков, и как шпаргалка для практиков

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1915🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
Всё, что нужно для трассировки LLM-приложений это Python-декоратор (open-source).

Большинство метрик для LLM оценивают приложение как чёрный ящик от начала до конца.

Но LLM-приложения требуют оценки и трассировки на уровне компонентов, ведь ошибка может быть где угодно: в ретривере, вызове инструмента или самом LLM.

С помощью deepeval это делается всего в 3 строки кода:

– Используй декоратор @observe, чтобы трассировать отдельные компоненты (инструменты, ретриверы, генераторы)
– Привязывай метрики к каждому из компонентов
– Получай визуальный разбор — что работает, а что ломается

И всё. Переписывать существующий код не нужно. 😄

Пример есть выше для RAG-приложения.

Deepeval — полностью open-source, уже 8500+ звёзд на GitHub. Можно легко задеплоить у себя. Все данные останутся под твоим контролем.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍9🔥5
Pandas vs PySpark

Если ты работаешь с небольшими данными на ноутбуке или с большими объёмами на кластере — именно Pandas и PySpark лежат в основе современной аналитики данных.

Когда я только начинал, постоянно ловил себя на вопросах: «А как сделать эту операцию из Pandas в PySpark?»
или «Какой эквивалент у этого DataFrame-кода в PySpark?» 😨

Переключаться между ними было непросто — разный синтаксис, разный подход. Поэтому держи простую шпаргалку с командами в лоб-в-лоб, чтобы упростить переход.

Что внутри:
❯ Удобный выбор, фильтрация и сортировка строк
❯ Группировка, агрегации и join’ы без боли
❯ Обработка пропущенных значений
❯ Плавный перенос логики между Pandas и PySpark

Совет: если освоишь обе библиотеки — сможешь уверенно переключаться между небольшими проектами и масштабными пайплайнами.

И не забывай:

«В Pandas ты учишься ремеслу. В PySpark — масштабированию.»



👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
35👍6🏆5
This media is not supported in your browser
VIEW IN TELEGRAM
Практический Python от Дэвида Бизли (один из самых уважаемых экспертов по Python, автор книги "Python Essential Reference")

Курс учит не просто писать код, а думать как интерпретатор, избегая фреймворков. Всё на голом Python, от функций до генераторов и итераторов

Материал подаётся плотно, с минимальной теорией и сразу с практикой.

Курс доступен онлайн, без регистрации и бесплатно, включая слайды, заметки и упражнения 🤔

Ссылка на курс: тык

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3812👍11🤣2
Text-to-Speech нового уровня

Chatterbox — первый open-source TTS, готовый к продакшену.

➣ Задержки менее 200 мс
➣ Синтеза речи нулевого выстрела (zero-shot) на уровне SoTA
➣ Управления эмоциями и выразительностью

Полностью open-source 😱

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍8
Совет по Pytest:

Используйте @pytest.mark.skipif, чтобы условно пропускать тесты в зависимости от определённых условий — например, платформы, наличия зависимостей или значений переменных окружения

Декоратор @pytest.mark.skipif(...) указывает Pytest пропустить выполнение теста, если условие истинно.

В примере, тест пропускается, если используется Python версии ниже 3.9, потому что оператор объединения словарей (|) появился только в Python 3.9.

Аргумент reason сообщает причину пропуска, которая отображается в отчёте Pytest.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍156🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Это библия для разработчиков: вся нужная документация в одном месте

✓ Языки программирования, библиотеки, фреймворки
✓ Поиск сразу по всем источникам
✓ Всегда актуальные версии

Дока обновляется каждый день. Открывай в одной вкладке хоть Python, Postgres и Bash

Никакой рекламы, всё супербыстро → devdocs․io 😱

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
31👍8🤯4🔥2