Реальный Python – Telegram
Реальный Python
3.81K subscribers
825 photos
10 videos
7 files
874 links
Все о пайтон, новости, подборки на русском и английском. По всем вопросам @evgenycarter
Download Telegram
🚀 FastAPI - современный асинхронный веб-фреймворк на Python, который позволяет создавать быстрые и удобные API.

Статья от Real Python даёт отличное введение в работу с FastAPI: от установки и запуска первого приложения до обработки запросов и валидации данных с помощью Pydantic. Разбираются основы маршрутизации, использование Swagger UI для документации и преимущества асинхронности.

Если вы хотите быстро стартовать с созданием API на Python, этот гайд - отличный первый шаг.

https://realpython.com/get-started-with-fastapi/

#python

👉 @python_real
👍1
🔍Тестовое собеседование на Middle Python в четверг с разработчиком из Авито

25 сентября(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
YAML: The Missing Battery in Python

https://realpython.com/python-yaml/

#python

👉 @python_real
👍2
268: Advice on Beginning to Learn Python
The Real Python Podcast
Episode 268: Advice on Beginning to Learn Python

Что изменилось в обучении Python за последние несколько лет? Какие новые подходы и обновлённые советы стоит знать новичкам, начинающим свой путь в программировании? На этой неделе в подкасте Стивен Группетта и Мартин Брёус вновь обсуждают, как начать изучать Python.

Мы делимся методами поиска мотивации, построения собственных проектов и освоения основ языка. Даём советы по установке Python и объясняем, почему не стоит зацикливаться на выборе «идеального» редактора. Также рассматриваем, как использовать большие языковые модели (LLM) в процессе обучения программированию и практиковаться в умении задавать хорошие вопросы.

Topics:

00:00:00 – Introduction
00:02:36 – Martin’s teaching background
00:02:57 – Stephen’s teaching background
00:04:07 – Having a vested interest in learning
00:08:35 – No shortcut to learning the fundamentals
00:09:21 – Parallels to learning a foreign language
00:12:43 – What’s different about starting to learn Python now?
00:15:03 – Stephen’s journey to coaching and using LLMs
00:16:20 – Are LLMs helpful for learning?
00:18:50 – Teaching what you’ve learned to someone else
00:19:38 – Learning how to ask good questions
00:22:11 – Improved error messages
00:24:35 – REPL: Read Evaluate Print Loop
00:26:33 – Video Course Spotlight
00:27:48 – Installing Python and choosing an editor
00:35:16 – Considering the scale of beginner projects
00:37:39 – Should a beginner be concerned with making Pythonic code?
00:40:55 – Using LLM tools and defining your level of skill
00:42:39 – Python for Beginners: Code With Confidence - live course
00:47:32 – Looking at projects - Awesome Python
00:48:02 – Asking an LLM to explain the code generated
00:50:46 – Debuggers and seeing code run
00:51:23 – Thanks and goodbye

https://realpython.com/podcasts/rpp/268/

#python

👉 @python_real
👍1
🔍Тестовое собеседование на Middle Python в четверг с разработчиком из Авито

9 октября(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир →
@shortcut_py_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Что нового в Python 3.14

Python 3.14 принес кучу интересных обновлений, которые делают язык ещё мощнее и удобнее для разработчиков. Вот краткий обзор:

🔹 Новый модуль tomllib — теперь можно парсить TOML прямо из стандартной библиотеки без сторонних зависимостей.
🔹 Оптимизации скорости — Python продолжает становиться быстрее. Улучшения в байткоде и оптимизация работы с коллекциями дают заметный прирост производительности.
🔹 Новые возможности аннотаций типов — улучшена работа с типами TypeAliasType, а также добавлены новые инструменты для статического анализа.
🔹 Расширения для pattern matching — теперь можно использовать ещё более гибкие шаблоны, особенно для сложных структур данных.
🔹 Изменения в работе GIL — продолжается подготовка к многопоточному Python без GIL в будущем.

https://realpython.com/python314-new-features/

#python

👉 @python_real
👍41👏1😁1🆒1
🚫👩‍💻 🚫 Как не нужно писать на Python

Приглашаем на открытый урок.

🗓 27 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса
«Python Developer. Professional».

Даже опытные разработчики порой создают код, который работает — но жить с ним потом невозможно. На открытом уроке разберём типичные ошибки и антипаттерны в Python, поговорим о причинах появления «плохого» кода и способах сделать его понятнее, стабильнее и быстрее. Рассмотрим как распространённые, так и неожиданные примеры, которые помогут взглянуть на привычные решения под новым углом.

На вебинаре разберём:
✔️ Основные антипаттерны и неудачные практики в Python-разработке
✔️ Почему появляются «плохие» решения и как их вовремя распознать
✔️ Подходы и инструменты, которые помогают улучшить качество кода

В результате вебинара вы:
✔️Поймёте, чего стоит избегать при написании кода на Python
✔️Научитесь видеть и исправлять проблемные участки в своих проектах
✔️Узнаете, как писать читаемый, поддерживаемый и эффективный код

🔗 Ссылка на регистрацию: https://vk.cc/cQxmGa

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤣1
Шахматы, которые вас удивят: Полный гайд по созданию игры с туманом войны на Python

Всё началось с подготовки к финалу RuCode – масштабному соревнованию для всех увлечённых алгоритмическим программированием. Погружаясь в разбор заданий прошлых лет, мне кое-что совершенно случайно попало в руки, интересная задача: реализовать шахматы с "туманом войны" в консоли

Идея показалась мне настолько вдохновляющей, что я решил пойти дальше, а что если превратить эту консольную головоломку в настоящую игру с графикой и той самой атмосферой тумана войны, который так знаком игрокам в стратегиях

Идея зацепила сразу, представьте классические шахматы, но с элементом неожиданности. Вы не видите все фигуры противника, а только те клетки, куда могут ступить ваши фигуры. Каждый ход превращается в тактическую загадку, что скрывается в темноте? Где спрятался вражеский ферзь? и т.д.

Так обычная подготовка к соревнованиям превратилась в увлекательный эксперимент, результатом которого стала эта статья и реализация шахмат с туманом войны на Python

https://habr.com/ru/articles/958560/

#python

👉 @python_real
👍4🔥1🤔1
Короче, ищем менторов — Senior Python-разработчиков

Ищем в ШОРТКАТ — менторскую платформу от команды разработчиков из бигтеха. Мы помогаем найти крутую работу, апнуть грейд или сменить стек.

Что надо будет делать: проводить тестовые собесы → оценивать грейд → помогать разбираться в сложных темах.

Что взамен:
- От 40К за 5-7 часов работы в неделю
- Доступ к обучению и комьюнити сильных менторов из Яндекс, Uber, VK, Сбер
- Возможность выступать на эфирах, куда уже приходят 500+ разработчиков, и стать заметнее на рынке

Заполняй форму — свяжемся и расскажем подробности
➡️https://tally.so/r/mD602X


Реклама.
О рекламодателе.
👍1🤮1
YAML: The Missing Battery in Python

YAML (YAML Ain’t Markup Language) - это человекочитаемый формат сериализации данных, который часто используется для файлов конфигураций, обмена данными между языками и управления инфраструктурой (например, в Docker, Kubernetes и т. д.).

В Python с YAML удобно работать с помощью библиотеки PyYAML. Она позволяет:

- читать YAML-файлы и преобразовывать их в стандартные Python-объекты (dict, list, str, и т. д.);
- записывать данные обратно в YAML;
- безопасно загружать данные с помощью safe_load() (чтобы избежать выполнения произвольного кода);
- использовать настраиваемые объекты и теги для сериализации нестандартных типов.

Пример загрузки YAML-файла:


import yaml

with open("config.yaml", "r") as f:
config = yaml.safe_load(f)

print(config)


Пример записи:


import yaml

data = {"name": "Oleg", "skills": ["Python", "AI", "ML"]}

with open("output.yaml", "w") as f:
yaml.dump(data, f)


Также PyYAML поддерживает:

- настройку форматирования вывода (default_flow_style=False, indent и т. д.),
- пользовательские конструкторы и представления (add_constructor, add_representer),
- и интеграцию с другими инструментами DevOps.

https://realpython.com/python-yaml/

#python

👉 @python_real
👍2
👩‍💻 Асинхронное взаимодействие в Python на примере RabbitMQ

Приглашаем на открытый урок.

🗓 10 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса
«Python Developer. Professional».

Асинхронное взаимодействие — один из ключевых принципов микросервисной архитектуры, который позволяет системам работать быстрее и надёжнее. В Python этот подход реализуется с помощью инструментов, таких как RabbitMQ.

На вебинаре разберём:
✔️ Основы микросервисной архитектуры приложений
✔️ Принципы асинхронного взаимодействия в микросервисной архитектуре
✔️ Практический пример использования RabbitMQ для организации обмена сообщениями между сервисами

В результате вебинара вы:
✔️Поймёте, как работает асинхронное взаимодействие и зачем оно нужно
✔️Научитесь использовать RabbitMQ для построения архитектуры приложений
✔️Узнаете, какие преимущества и ограничения имеет асинхронный подход

🔗 Ссылка на регистрацию: https://vk.cc/cR0Dxw

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌
https://news.1rj.ru/str/bash_srv Bash Советы
https://news.1rj.ru/str/win_sysadmin Системный Администратор Windows
https://news.1rj.ru/str/sysadmin_girl Девочка Сисадмин
https://news.1rj.ru/str/srv_admin_linux Админские угодья
https://news.1rj.ru/str/linux_srv Типичный Сисадмин
https://news.1rj.ru/str/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://news.1rj.ru/str/linux_odmin Linux: Системный администратор
https://news.1rj.ru/str/devops_star DevOps Star (Звезда Девопса)
https://news.1rj.ru/str/i_linux Системный администратор
https://news.1rj.ru/str/linuxchmod Linux
https://news.1rj.ru/str/sys_adminos Системный Администратор
https://news.1rj.ru/str/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://news.1rj.ru/str/sysadminof Книги для админов, полезные материалы
https://news.1rj.ru/str/i_odmin Все для системного администратора
https://news.1rj.ru/str/i_odmin_book Библиотека Системного Администратора
https://news.1rj.ru/str/i_odmin_chat Чат системных администраторов
https://news.1rj.ru/str/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://news.1rj.ru/str/sysadminoff Новости Линукс Linux

1C разработка 📌
https://news.1rj.ru/str/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://news.1rj.ru/str/DevLab1C 1С:Предприятие 8
https://news.1rj.ru/str/razrab_1C 1C Разработчик
https://news.1rj.ru/str/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://news.1rj.ru/str/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://news.1rj.ru/str/cpp_lib Библиотека C/C++ разработчика
https://news.1rj.ru/str/cpp_knigi Книги для программистов C/C++
https://news.1rj.ru/str/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://news.1rj.ru/str/pythonofff Python академия.
https://news.1rj.ru/str/BookPython Библиотека Python разработчика
https://news.1rj.ru/str/python_real Python подборки на русском и английском
https://news.1rj.ru/str/python_360 Книги по Python

Java разработка 📌
https://news.1rj.ru/str/BookJava Библиотека Java разработчика
https://news.1rj.ru/str/java_360 Книги по Java Rus
https://news.1rj.ru/str/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://news.1rj.ru/str/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://news.1rj.ru/str/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://news.1rj.ru/str/developer_mobila Мобильная разработка
https://news.1rj.ru/str/kotlin_lib Подборки полезного материала по Kotlin
https://news.1rj.ru/str/androidspb Разработка под Android: Kotlin, Java.

Фронтенд разработка 📌
https://news.1rj.ru/str/frontend_1 Подборки для frontend разработчиков
https://news.1rj.ru/str/frontend_sovet Frontend советы, примеры и практика!
https://news.1rj.ru/str/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://news.1rj.ru/str/game_devv Все о разработке игр

Библиотеки 📌
https://news.1rj.ru/str/book_for_dev Книги для программистов Rus
https://news.1rj.ru/str/programmist_of Книги по программированию
https://news.1rj.ru/str/proglb Библиотека программиста
https://news.1rj.ru/str/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://news.1rj.ru/str/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://news.1rj.ru/str/bookflow Лекции, видеоуроки, доклады с IT конференций
https://news.1rj.ru/str/rust_lib Полезный контент по программированию на Rust
https://news.1rj.ru/str/golang_lib Библиотека Go (Golang) разработчика
https://news.1rj.ru/str/itmozg Программисты, дизайнеры, новости из мира IT
https://news.1rj.ru/str/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://news.1rj.ru/str/nodejs_lib Подборки по Node js и все что с ним связано
https://news.1rj.ru/str/ruby_lib Библиотека Ruby программиста
https://news.1rj.ru/str/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров

Математика 📌
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике
https://news.1rj.ru/str/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://news.1rj.ru/str/Excel_lifehack

https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
🧼 Методы strip(), lstrip() и rstrip() в Python: удаление пробелов и символов

Работая с текстом в Python, часто нужно удалить лишние пробелы или символы с краёв строки. Именно для этого существуют методы strip(), lstrip() и rstrip().

Основы


text = " hello world "
print(text.strip()) # 'hello world'
print(text.lstrip()) # 'hello world '
print(text.rstrip()) # ' hello world'


По умолчанию эти методы удаляют пробелы, переводы строк, табуляции и другие пробельные символы.

Удаление определённых символов

Можно передать в метод строку с символами, которые нужно удалить:


text = ".,!?hello world!?.,"
print(text.strip(".,!?")) # 'hello world'


Важно: метод удаляет все указанные символы, а не подстроку. То есть strip("abc") удалит все a, b и c, а не строку "abc".

Применение в реальной жизни

- Очистка данных перед обработкой.
- Удаление лишних символов после парсинга.
- Нормализация пользовательского ввода.

Совет

Если нужно удалить только начало или только конец строки — используй lstrip() или rstrip() соответственно.

https://realpython.com/python-strip/

#python

👉 @python_real
👍4
🤖👩‍💻🤖 Научим нейросеть распознавать рукописные буквы прямо на занятии!

Приглашаем на открытый урок.

🗓 18 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса
«Python Developer. Professional».

Машинное обучение часто кажется чем-то абстрактным и сложным. Но на самом деле основы можно понять на практическом примере. На открытом уроке прямо в Jupyter Notebook мы загрузим данные, обучим модель на Python и посмотрим, как она «угадывает» буквы на картинках. Это позволит наглядно увидеть, как работает искусственный интеллект.

На вебинаре разберём:
✔️ Как устроен процесс обучения модели машинного обучения
✔️ Как использовать Python и Jupyter Notebook для решения задачи распознавания
✔️ Как проверить результат: модель в действии на примере распознавания букв

В результате вебинара вы:
✔️Поймёте, из чего состоит процесс обучения нейросети
✔️Научитесь запускать простой эксперимент по машинному обучению самостоятельно
✔️Увидите, как модель применяет полученные знания на реальных примерах

🔗 Ссылка на регистрацию: https://vk.cc/cR97Dr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Python MarkItDown: преобразование документов в Markdown для LLM

Библиотека MarkItDown позволяет быстро преобразовывать PDF, файлы Office, изображения, HTML, аудио и URL в Markdown, готовый для использования в языковых моделях (LLM). В этом руководстве вы сравните MarkItDown с Pandoc, запустите его из командной строки, используете в Python-коде и встроите конвертацию в рабочие процессы с ИИ.

По завершении урока вы поймёте следующее:

- MarkItDown можно установить через pip, используя спецификатор [all], чтобы подтянуть необязательные зависимости.
- В командной версии (CLI) результат можно сохранить в файл с помощью опции -o или --output, указав путь назначения.
- Метод .convert() читает входной документ и преобразует его в Markdown.
- Сервер MCP MarkItDown можно подключать к клиентам вроде Claude Desktop, чтобы выполнять конвертацию по запросу прямо в чате.
- MarkItDown может интегрироваться с LLM для генерации описаний изображений и извлечения текста с помощью OCR и пользовательских промптов.

https://realpython.com/python-markitdown/

#python

👉 @python_real
2👍1
Основы работы с декораторами Python

В этом уроке по декораторам Python вы узнаете, что они собой представляют, как их создавать и использовать. Декораторы предоставляют простой синтаксис для вызова функций более высокого порядка.
По определению, декоратор - это функция, которая принимает другую функцию и расширяет поведение последней, не изменяя ее в явном виде. Звучит запутанно, но все станет понятнее после того, как вы увидите несколько примеров работы декораторов.

https://realpython.com/primer-on-python-decorators/

#python

👉 @python_real
👍2
Python calendar Module: Создание календарей с помощью Python

Python calendar module предоставляет несколько способов создания календарей для Python-программ. Он также включает в себя множество функций для работы с данными календаря в виде строк, чисел и объектов времени даты.

В этом уроке вы узнаете, как использовать модуль calendar для создания и настройки календарей в Python.

https://realpython.com/python-calendar-module/

#python

👉 @python_real
👍21
👩‍💻 Хотите стать Python-профи и решать задачи любой сложности? Уже знакомы с базой, но готовы выйти на уровень эксперта с промышленными best practice?

🔥 Курс «Python Developer. Professional» от OTUS — это живые лекции от практикующих разработчиков из крупных IT-компаний, разбор реальных кейсов и постоянное обновление программы под требования рынка.
Мы покрываем асинхронность, метапрограммирование, профилирование и безопасность кода, а также глубокую работу с FastAPI, Django, Pandas и другими ключевыми инструментами.

🦾Вы сможете проектировать высокопроизводительные веб-сервисы и RESTful API, интегрировать ML-модели, анализировать и визуализировать большие данные, писать чистый и безопасный код по паттернам проектирования.

➡️ Пройдите короткое вступительное тестирование и присоединяйтесь к группе: https://vk.cc/cRBKrv

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Установка и выполнение приложений Python с использованием pipx

В этом руководстве вы узнаете об инструменте pipx, который позволяет удобно устанавливать и запускать пакеты Python как автономные приложения командной строки в изолированных средах.

https://realpython.com/python-pipx/

👉 @python_real
👍2
Практичные Python-привычки, которые реально повышают качество кода

1. Явное состояние и мемоизация
Скрытые состояния в замыканиях и декораторах часто приводят к трудноуловимым багам.


from functools import wraps

def memoize(func):
cache = {}
@wraps(func)
def wrapper(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrapper


Использование @wraps сохраняет имя функции, docstring и метаданные — критично для дебага и интеграции с Flask.

2. Асинхронность для продакшн
Асинхронность часто ухудшает код, если использовать её неправильно.


import asyncio, aiohttp

TOTAL_REQUESTS = 1_000_000
sem = asyncio.Semaphore(1000)

async def fetch(session, url):
async with sem:
try:
async with session.get(url) as resp:
return await resp.text()
except aiohttp.ClientError:
return None

async def main():
urls = [f"https://api.site/{i}" for i in range(TOTAL_REQUESTS)]
async with aiohttp.ClientSession() as session:
for i in range(0, len(urls), 10_000):
chunk = urls[i:i+10_000]
tasks = [fetch(session, url) for url in chunk]
await asyncio.gather(*tasks)


Контроль через Semaphore + чанки предотвращает OOM и блокировки API. Используйте create_task() для управления жизненным циклом корутин.

3. Ошибки и raise
Не ловите всё подряд и используйте новые возможности языка.


# Python 3.11+
user.is_admin or raise PermissionError("Not allowed!")


raise как выражение и except* (Python 3.11) делают обработку ошибок лаконичной и безопасной:


# Python 3.11+
try:
await asyncio.gather(fail1(), fail2())
except* ValueError as ve: # Только ValueError
print(f"ValueErrors: {ve.exceptions}")
except* TypeError as te: # Только TypeError
print(f"TypeErrors: {te.exceptions}")


4. Типизация и валидация

from pydantic import validate_call
from typing import Annotated
from pydantic.types import Gt, Ge, Le

@validate_call
def calculate_discount(
price: Annotated[float, Gt(0)],
discount: Annotated[float, Ge(0), Le(100)]
) -> float:
return price * (1 - discount / 100)


Constraints прямо в аннотациях делают сигнатуры самодокументируемыми и безопасными без дублирования проверок.

5. Ленивая загрузка и кеширование
@cached_property и functools.cache экономят время при дорогих вычислениях.

from functools import cached_property
import time

class UserReport:
def __init__(self, user_id):
self.user_id = user_id
@cached_property
def total_spent(self):
print("Querying database...")
time.sleep(2) # expensive call
return 199.99

r = UserReport(123)
print(r.total_spent) # computed once
print(r.total_spent) # cached instantly
del r.__dict__["total_spent"]
print(r.total_spent) # recomputed after cache reset


Результат хранится в dict объекта, можно сбросить при необходимости. Отлично подходит для API-запросов и конфигураций.

6. Python 3.14+
Новые возможности языка ускоряют работу и упрощают код:

uuid7() — уникальные и сортируемые по времени ключи

ContextVar как контекстный менеджер

t-strings (t"...") для отложенных шаблонов

subTests для granular тестирования


from string.templatelib import Template

def render(template: Template):
parts = []
for item in template:
if isinstance(item, str):
parts.append(item)
else:
parts.append(item.value)
return "".join(parts)

user = "Alice"
role = "admin"
t = t"user: {user} — role: {role}"
s = render(t)


Жалко что не добавили .format() для t -строк

Заключение
Даже небольшие изменения в подходе к разработке дают ощутимый эффект на качество кода и скорость разработки.

👉 @python_real
👍2
🐍 SOLID принципы в Python: Фундамент чистого кода

Хотите писать код, который легко поддерживать, тестировать и масштабировать? Тогда вам точно стоит внедрить в свои проекты принципы SOLID. Это «золотой стандарт» объектно-ориентированного программирования, который отлично ложится и на Python.

🔹 S - Single Responsibility (Принцип единственной ответственности)
У класса должна быть только одна причина для изменения. Не делайте «божественные объекты», которые умеют всё. Разделяйте логику: один класс управляет файлами, другой - сжимает их в zip.

🔹 O - Open-Closed (Принцип открытости/закрытости)
Сущности (классы, модули) должны быть открыты для расширения, но закрыты для модификации. Хотите добавить новую фигуру? Не переписывайте старый класс, а создайте новый, наследуясь от абстракции.

🔹 L - Liskov Substitution (Принцип подстановки Барбары Лисков)
Объекты подклассов должны заменять объекты родительских классов без поломки кода. Если Square наследуется от Rectangle, он должен вести себя как прямоугольник во всех ситуациях (спойлер: это часто вызывает проблемы).

🔹 I - Interface Segregation (Принцип разделения интерфейса)
Клиенты не должны зависеть от методов, которые они не используют. В Python это решается через создание узкоспециализированных абстрактных классов или протоколов (Protocols), вместо одного огромного интерфейса.

🔹 D - Dependency Inversion (Принцип инверсии зависимостей)
Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба должны зависеть от абстракций. Используйте dependency injection, чтобы код был гибким.

👉 Читать полный гайд с примерами рефакторинга: https://realpython.com/solid-principles-python/

👉 @python_real
👍2