Python for Devs
1.17K subscribers
50 photos
19 videos
68 links
По сотрудничеству пишите в личные сообщения канала.
Download Telegram
😵‍💫 Как победить циклические импорты в Python простым способом

Команда Python for Devs подготовила перевод статьи о том, как справляться с циклическими импортами в Python.

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

📚 Подробности на Хабр: https://habr.com/ru/articles/944684/
👍4🔥32👎2
🚀 PEP 750: t-строки — новый уровень форматирования в Python!

Python 3.14 приносит крупное обновление синтаксиса — template-строки (или коротко t-строки). Это расширение привычных f-строк, которые мы любим за удобство и читаемость.

Что это такое?

t"..." — это строки с подстановкой выражений и шаблонов. Они позволяют смешивать f-строки, str.format() и шаблоны для безопасного форматирования.

Например:


name = "Alice"
msg = t"Hello, {name}!"
print(msg) # Hello, Alice!


Зачем они нужны?

🟣 Единый механизм вместо трёх (f-строки, format(), Template).
🟣 Безопасность: можно использовать в шаблонах без выполнения кода.
🟣 Гибкость: легко комбинировать динамическое и статическое форматирование.
🟣 Производительность: компилятор оптимизирует t-строки лучше, чем старые API.

Что важно знать?

t-строки — это супермножество f-строк, всё, что работало раньше, продолжит работать.

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

Отлично подходит для логов, шаблонов сообщений и любых случаев, где f-строки были избыточны или небезопасны.

В Python 3.14 логирование будет выглядеть сильно приятнее:


t"User {user} logged in at {time:%H:%M}"


Подробности про PEP-750: https://peps.python.org/pep-0750

А вы уже представляете, где будете применять t-строки? Пишите в комментариях👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👎211👍15🔥53
🤖 Неудачные эксперименты с Vibe Coding на Python

Все говорят, что ИИ уже умеет писать приложения, но стоит чуть отклониться от привычных сценариев — и всё идёт наперекосяк.

Картофельная Африка вместо карты, пинбол, превращающийся в пинг-понг, и счёты с отрицательными числами — смотрим на коллекцию своих провалов с vibe coding.

📚 Подробности на Хабр: https://habr.com/ru/articles/944698/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28👎242🔥2
#PythonHero 👑 Великодушный пожизненный диктатор

Команда Python for Devs считает важным рассказать о людях, которые внесли наибольший вклад в развитие языка Python и его экосистемы. В первом посте из серии #PythonHero мы расскажем о Гвидо ван Россуме — человеке, чье имя давно стало легендой в мире компьютерных наук.

–––

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

Этот статус назывался «Benevolent Dictator For Life» — великодушный пожизненный диктатор. Формулировка ироничная: диктатор — потому что финальное решение за ним, а великодушный — потому что все его решения были в интересах развития Python.

В 2018 году Гвидо сложил с себя полномочия BDFL. Вместо единоличного лидера Python теперь управляется Steering Council — советом из пяти человек, которых выбирают core-разработчики.

Сегодня «BDFL» — это уже часть истории, символ того, как личность может сформировать культуру и ценности целого сообщества.

А вы знали, что Python был одним из немногих крупных языков, у которого долгое время был один признанный лидер?
5🔥3👍2
😳 Как мы освободили 20 ГБ в PostgreSQL без удаления данных

Команда Python for Devs подготовила перевод статьи о том, как можно освободить десятки гигабайт места в PostgreSQL без удаления данных и индексов.

TL;DR: удаляем неиспользуемые индексы, чистим bloat, пересобираем таблицы и используем частичные индексы, чтобы хранить только то, что реально нужно.

📚 Подробности на Хабр: https://habr.com/ru/articles/944704/
👍42🔥2
🔥 Нововведение, которое изменило Python

В 2018 году Python получил оператор присваивания в выражениях :=, известный как walrus operator. Он появился благодаря PEP 572 и стал одной из самых обсуждаемых фич за всю историю языка.

Что это такое?
Оператор позволяет присвоить значение переменной прямо внутри выражения:


if (n := len(data)) > 10:
print(f"Слишком длинный список: {n} элементов")


Зачем?
Это упрощает код, избавляя от дублирования. До := приходилось дважды писать одно и то же выражение: сначала вычислять его, потом использовать.


n = len(data)
if n > 10:
print(f"Слишком длинный список: {n} элементов")


⚠️ Почему сообщество было против?

* Новый синтаксис казался слишком «магическим» и непривычным.
* Опасения, что Python потеряет читаемость и станет «вторым Perl».
* Многие считали, что выгода слишком мала, чтобы ломать стиль кода.

Финальное решение

Несмотря на жаркие споры, Гвидо ван Россум лично принял решение в пользу PEP 572. Но цена оказалась высокой: давление и негатив вокруг этой дискуссии подтолкнули его уйти с поста BDFL (Benevolent Dictator For Life).

К чему это привело?

* Python получил «walrus» начиная с версии 3.8.
* Управление языком изменилось навсегда: вместо одного лидера теперь решения принимает Steering Council, избираемый core-разработчиками.
* Этот кризис стал поворотной точкой: Python перешёл к более демократичной модели развития.

🐍 Оператор := изменил не только синтаксис, но и саму систему управления Python.

А вы используете walrus в своём коде или до сих пор относитесь к нему с недоверием?
👍73🔥2
🤷 Какой Python-фреймворк выбрать: Django, Flask или FastAPI?

Команда Python for Devs подготовила перевод статьи о том, какой фреймворк выбрать для веб-разработки на Python: Django, Flask или FastAPI.

Django берёт надёжностью и готовой функциональностью, Flask — гибкостью и минимализмом, FastAPI — скоростью и современными возможностями.

📚 Подробности на Хабр: https://habr.com/ru/articles/944708/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥32
Какой Python-фреймворк вы предпочитаете для веб-разработки?
Anonymous Poll
39%
Django
8%
Flask
41%
FastAPI
13%
Другой
🫡 Еженедельный дайджест №2

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Статьи:
Zen of Python: философия языка
Как победить циклические импорты в Python простым способом
Неудачные эксперименты с Vibe Coding на Python
Как мы освободили 20 ГБ в PostgreSQL без удаления данных
Какой Python-фреймворк выбрать: Django, Flask или FastAPI?

Посты-коротыши:
Пасхалка в Python: антигравитация
PEP 750: t-строки — новый уровень форматирования в Python!
PythonHero 👑 Великодушный пожизненный диктатор
Нововведение, которое изменило Python

Опросы:
Какой Python-фреймворк вы предпочитаете для веб-разработки?

Самый популярный комментарий этой недели – комментарий к статье "Как мы освободили 20 ГБ в PostgreSQL без удаления данных" от пользователя @Azrak:

"...как можно освободить десятки гигабайт места в PostgreSQL без удаления данных и индексов ... удаляем неиспользуемые индексы" 🙂


@python_for_devs
👍4🔥32
Меньше магии, больше кода: мой способ писать Django views

Команда Python for Devs подготовила перевод статьи о том, как автор выбирает способ написания представлений в Django.

Он считает, что обобщённые классовые представления (CBV) скрывают слишком много магии, усложняют чтение кода и отладку. Вместо них он использует базовый View, чтобы сохранять контроль, но при этом избегать громоздких if в функциях.

А вы как пишете свои представления — на функциях, CBV или тоже предпочитаете «чистый» View?

📚 Подробности на Хабр: https://habr.com/ru/articles/946734/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1
🔧 Целостность данных JSON-колонок в PostgreSQL

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

Если не контролировать содержимое JSON-колонок, туда легко попадут неожиданные значения: числа вместо строк, объекты вместо массивов. В итоге приложение может «сломаться» на ровном месте.

В MySQL проверка JSON поддерживается из коробки. В PostgreSQL для этого есть расширение, которое позволяет валидировать данные по JSON-схеме прямо на уровне БД.

Пример: у нас есть таблица products с колонкой attributes, где хранятся характеристики товара.


CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
attributes JSON NOT NULL DEFAULT '{}'
);


Мы ожидаем, что поле tags внутри этого JSON будет массивом строк. Однако без строгой проверки на уровне базы данных нет гарантии, что кто-то не запишет туда числа, объекты или вообще что-то неподходящее.

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

Пример для PostgreSQL:


ALTER TABLE products ADD CONSTRAINT data_is_valid CHECK(
validate_json_schema(
'{
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": { "type": "string" }
}
},
"additionalProperties": false
}',
attributes
)
);


Теперь, попытка вставить данные с невалидным значение для tags приведёт к ошибке:


INSERT INTO products (..., attributes) VALUES
(..., '{}'), -- Пустой объект, допускается
(..., '{"tags": []}'), -- Пустой массив строк
(..., '{"tags": ["test"]}'); -- Массив со строкой
-- Результат: Операция успешна

INSERT INTO products (..., attributes) VALUES
(..., '{"tags": [2]}'); -- Массив с числом вместо строки
-- Ошибка: Нарушен constraint
👍6🔥52
🔝 Топ-6 Python-библиотек для визуализации

Matplotlib, seaborn, Plotly, Altair, Pygal и Bokeh — у каждой свои сильные и слабые стороны: от академических статичных графиков до интерактивных дашбордов для бизнеса.

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

📚 Подробности на Хабр: https://habr.com/ru/articles/946750/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥32
🏆 Python разрывает конкурентов — 26% рейтинга!

Python уверенно №1 в TIOBE Index с огромным отрывом: 25.98% (+5.81% за год). Это почти втрое больше, чем у ближайшего конкурента C++ (8.8%).

Интересно, что ещё в 2010 Python был на 7-м месте, а в 2000 — аж на 23-м. Сегодня это де-факто язык №1 для науки о данных, автоматизации, AI и обучения программированию.

За счёт простого синтаксиса и тонны библиотек Python остаётся идеальным входом в программирование — от скриптов до ML-моделей.

Источник.

#news@python_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4👍3🔥21
🫡 Django Templates: всё, что вам нужно знать

Команда Python for Devs подготовила перевод большого туторила по Django Templates.

В статье подробно разбирается, как устроен язык шаблонов Django, чем он отличается от Jinja, как правильно наследовать шаблоны и организовать структуру проекта.

Если вы хотите сделать свои Django-приложения более чистыми, поддерживаемыми и быстрыми — этот материал для вас.

📚 Подробности на Хабр: https://habr.com/ru/articles/946762/
3👍3🔥2
🫡 Еженедельный дайджест №3

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Меньше магии, больше кода: мой способ писать Django views
Целостность данных JSON-колонок в PostgreSQL
Топ-6 Python-библиотек для визуализации
Python разрывает конкурентов — 26% рейтинга!
Django Templates: всё, что вам нужно знать

Самый популярный комментарий этой недели – комментарий к статье "Меньше магии, больше кода: мой способ писать Django views" от пользователя @danilovmy:

Забавная статья. Автор не хочет запоминать другие «магические» методы и по-прежнему использует магию, такую как get_object_or_404, redirect или что-то еще...


@python_for_devs
4👍3🔥3