Python Portal
55.4K subscribers
1.92K photos
128 videos
46 files
508 links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
Скрытые фишки Python, которые должен знать каждый

Не всё в Python лежит на поверхности. Вот подборка приёмов, которые редко объясняют новичкам, но они делают код чище, короче и умнее

👍 — база
🔥 — знал об этом

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Если ты работаешь с нейросетями и хочешь понять, что происходит «под капотом» в PyTorch, обязательно загляни в статью от Edward Z. Yang — одного из ключевых разработчиков фреймворка

– как устроены тензоры
– что такое views и как они позволяют не копировать данные
– как работает autograd
– структура кода PyTorch
– логика диспетчеризации операций между CPU, CUDA и другими бекендами

—> читать

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Новинка в Python

PEP 750 вводят t-строки — это как f"..." но:

- интерполяция ограничена и контролируема;
- поддерживается строгое соответствие шаблону;
- можно передавать переменные явно, предотвращая SQL-инъекции и XSS.

Для чего? Для того, чтобы писать shell-команды, SQL, HTML и т.д. без риска инъекций и без ручного экранирования

Пример:

from string.templatelib import Template

name = "World"
template: Template = t"Hello, {name}!"

safe_output = html(template)


Здесь html() — это функция, которая принимает объект Template и возвращает безопасную строку, экранируя потенциально опасные вставки

PEP 787 предлагает добавить это прямо в subprocess и shlex (но пока в статусе "отложен")

Следим за развитием 😊

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Это отличный способ понять работу моделей машинного обучения

Библиотека Drawdata позволяет создавать двумерные (2D) датасеты прямо в Jupyter Notebook

Вы можете вручную выбирать точки данных с помощью виджета, и модель будет обновляться в реальном времени по мере добавления новых точек

Полностью интерактивно и в реальном времени 😮

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Создаем карту с поиском локации на Python 🐍

Хочешь ввести название города и сразу увидеть его на карте прямо в Jupyter Notebook?

Вот простой скрипт, который делает именно это

Используем библиотеки geopy и folium для геокодинга и отображения карты

Вводишь, например, "Tokyo" — и получаешь интерактивную карту с маркером прямо в блокноте

Удобно для гео-проектов, визуализаций 🔥

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Если ты работаешь с Python и анализом данных, то обязательно запомни эти приёмы из библиотеки pandas

👍 — пригодится
❤️ — спасибо

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь замедлить импорт чужих библиотек?

tarrif позволяет наложить тариф на любой Python-модуль — он будет загружаться с задержкой в зависимости от % "пошлины".

import tariff

tariff.set({
"numpy": 50, # 50% тариф
"pandas": 200, # 200% тариф
})

import numpy # теперь будет импортироваться медленнее


При этом в консоли вылезет:

JUST IMPOSED a 50% TARIFF on numpy! Original import took 45000 us, now takes 67500 us. American packages are WINNING AGAIN! #MIGA


Повод потроллить коллег 🤡

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Python List Methods cheatsheet.pdf
96.4 KB
Полезная шпаргалка по спискам, которую должен иметь под рукой каждый питонист

Все методы, которые нужны, с описанием всех возможных манипуляций с ними

Полный PDF — в файле 😎

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Ошибка №1 в Python: не кэшировать детерминированные функции, которые многократно вызываются с одними и теми же аргументами

Ошибка №2 в Python: не предпринимать меры, чтобы избежать переполнения памяти

Решение для обеих ошибок: использовать functools.lru_cache с аргументом, задающим размер кэша

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Преврати любую ML-статью в репозиторий с кодом

Paper2Code — это система на базе LLM-агентов, которая превращает научную работу в полноценный кодовый репозиторий

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

Полностью с открытым исходным кодом 💖

Ссылка на руководство: тут

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вам когда-то казалось, что вы безумны — держитесь

Есть люди, которые всерьёз решили писать Python с фигурными скобками

Так появился Bython — препроцессор, который превращает {} в питоновские отступы

Пишешь, как на C/JavaScript, а получаешь работающий Python

def sanity_check() {
print("Это точно Python?");
}


Устанавливается через pip install bython

Команда запуска: bython script.by

> PyPI: https://pypi.org/project/Bython
> GitHub: https://github.com/mathialo/bython

Последнее обновление было в 2018 — для фана и экспериментов пойдёт 🎧

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь быстро вытаскивать структурированные данные и инсайты из PDF, DOCX и других документов?

Попробуй ContextGem — LLM-фреймворк, который делает это максимально просто и прозрачно.

Всего несколько строк Python-кода и у тебя:

> Чистые таблицы
> Структурированные поля
> Конкретные инсайты

Работает на базе LLM. Полностью Open Source ❤️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
С выходом Python 3.11, 3.12 и 3.14 изменилась даже такая простая вещь, как вычисление скалярного произведения векторов

Сначала всё выглядело просто:

sum(map(operator.mul, vec1, vec2))


Но не все знают, что встроенная map может принимать 2 и более итерируемых объектов как источники аргументов для функции, которую она применяет

С Python 3.12 добавился аргумент strict, и стало логично его использовать

Однако из-за zip приходится “распаковывать” кортежи — поэтому тут нужен itertools.starmap, а не обычный map.

Наконец, в Python 3.14 всё снова упростилось:

sum(map(operator.mul, vec1, vec2, strict=True))


Встроенная map получает именованный аргумент strict, как и zip 😍

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Стэнфорд выложил, пожалуй, самые понятные и полезные шпаргалки по LLM и трансформерам

В них есть всё, что нужно:

• self-attention, flash attention, LoRA, SFT
• mixture of experts, дистилляция, квантизация
• RAG, агенты, LLM как "судья"

И главное — всё это бесплатно и в открытом доступе 🤍

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочешь общаться с ИИ от DeepSeek без ограничений и подписок?

Тогда зацени DeeperSeek —> неофициальную Python-библиотеку, которая позволяет напрямую работать с сайтом DeepSeek, обходя официальный API

Отправка сообщений и получение ответов
Обход Cloudflare-защиты
Поддержка входа по e-mail и токену
• Работает даже в Google Colab
Работает с DeepThink и нейропоиском

💖спасибо, админ
👍 — имба

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
mementopython3-russian_with_link.pdf
315.1 KB
У меня для тебя подгон

Если ты только начал изучать Python или уже пишешь скрипты, но забываешь синтаксис — вот то, что тебе нужно. Эта краткая шпаргалка охватывает всё самое важное

Из разряда > распечатай и повесь перед собой 💖

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Скрывай личную информацию в своём Python-коде

Допустим, тебе нужно вывести email.

Но ты хочешь сделать тот самый эффект, как в ro*****@mathspp.com

В Python это довольно просто

Всё, что нужно — это f-строка и подходящие спецификаторы форматирования

1. Разделяем email

Используем str.partition, чтобы отделить имя пользователя (user) от домена:

user, _, domain = email.partition("@")


2. Показываем первые символы

Берём первые два:

user[:2]  # → 'ro'


3. Создаём поле нужной ширины

Поле должно быть длиной, как user, то есть len(user)

Используем f-строку:

f"{user[:2]:<{len(user)}}"


Пока что получится:

ro     


4. Меняем символ заполнения

По умолчанию заполняется пробелами, но мы хотим *.

Просто указываем его:

f"{user[:2]:*<{len(user)}}"


Получаем:

ro*****


5. Собираем всё вместе

Добавляем домен:

f"{user[:2]:


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python 3.14 добавили подсветку синтаксиса в новой интерактивной оболочке PyREPL

Теперь прямо в консоли Python код выглядит красиво, как в редакторе > ключевые слова, строки, числа и даже комментарии подсвечиваются цветом.

И это не всё. Можно настроить тему под себя

Пример дефолтной темы:

theme = {
"PROMPT": colors.BOLD_MAGENTA,
"KEYWORD": colors.BOLD_BLUE,
"BUILTIN": colors.CYAN,
"COMMENT": colors.RED,
"STRING": colors.GREEN,
"NUMBER": colors.YELLOW,
"OP": colors.RESET,
"DEFINITION": colors.BOLD,
"SOFT_KEYWORD": colors.BOLD_BLUE,
"RESET": colors.RESET,
}


Свою можно поставить так:

1. Меняем цвета для тех токенов, которые хотим подсветить. Складываем в импортируемый модуль. Например: your_theme

2. При старте Python установи тему через PYTHONSTARTUP

export PYTHONSTARTUP='import _colorize; from your_theme import theme; _colorize.set_theme(theme)'


—> Документация по PYTHONSTARTUP: клик
—> PR с реализацией подсветки: клик

Вот тут реализация подсветки, она довольно простая ❤️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Найти самый недавно изменённый файл в папке — это одна строка на Python

Всё, что нужно — это встроенная функция max и пользовательская функция key

Хочешь только файлы? Фильтруй с помощью генератора.

Нужен рекурсивный обход? Используй .rglob("*") вместо iterdir ❤️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM