😵💫 Как победить циклические импорты в Python простым способом
Команда Python for Devs подготовила перевод статьи о том, как справляться с циклическими импортами в Python.
В статье показан простой приём: иногда не нужно переписывать архитектуру, а достаточно изменить стиль импорта, чтобы избежать ошибок.
📚 Подробности на Хабр: https://habr.com/ru/articles/944684/
Команда Python for Devs подготовила перевод статьи о том, как справляться с циклическими импортами в Python.
В статье показан простой приём: иногда не нужно переписывать архитектуру, а достаточно изменить стиль импорта, чтобы избежать ошибок.
📚 Подробности на Хабр: https://habr.com/ru/articles/944684/
👍4🔥3❤2👎2
🚀 PEP 750: t-строки — новый уровень форматирования в Python!
Python 3.14 приносит крупное обновление синтаксиса — template-строки (или коротко t-строки). Это расширение привычных f-строк, которые мы любим за удобство и читаемость.
Что это такое?
t"..." — это строки с подстановкой выражений и шаблонов. Они позволяют смешивать f-строки,
Например:
Зачем они нужны?
🟣 Единый механизм вместо трёх (f-строки, format(), Template).
🟣 Безопасность: можно использовать в шаблонах без выполнения кода.
🟣 Гибкость: легко комбинировать динамическое и статическое форматирование.
🟣 Производительность: компилятор оптимизирует t-строки лучше, чем старые API.
Что важно знать?
t-строки — это супермножество f-строк, всё, что работало раньше, продолжит работать.
Новый синтаксис понятен даже новичкам: меньше магии, больше прозрачности.
Отлично подходит для логов, шаблонов сообщений и любых случаев, где f-строки были избыточны или небезопасны.
В Python 3.14 логирование будет выглядеть сильно приятнее:
Подробности про PEP-750: https://peps.python.org/pep-0750
А вы уже представляете, где будете применять t-строки? Пишите в комментариях👇
Python 3.14 приносит крупное обновление синтаксиса — template-строки (или коротко t-строки). Это расширение привычных f-строк, которые мы любим за удобство и читаемость.
Что это такое?
t"..." — это строки с подстановкой выражений и шаблонов. Они позволяют смешивать f-строки,
str.format() и шаблоны для безопасного форматирования. Например:
name = "Alice"
msg = t"Hello, {name}!"
print(msg) # Hello, Alice!
Зачем они нужны?
Что важно знать?
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🔥5❤3
Все говорят, что ИИ уже умеет писать приложения, но стоит чуть отклониться от привычных сценариев — и всё идёт наперекосяк.
Картофельная Африка вместо карты, пинбол, превращающийся в пинг-понг, и счёты с отрицательными числами — смотрим на коллекцию своих провалов с vibe coding.
📚 Подробности на Хабр: https://habr.com/ru/articles/944698/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28👎24❤2🔥2
#PythonHero 👑 Великодушный пожизненный диктатор
Команда Python for Devs считает важным рассказать о людях, которые внесли наибольший вклад в развитие языка Python и его экосистемы. В первом посте из серии #PythonHero мы расскажем о Гвидо ван Россуме — человеке, чье имя давно стало легендой в мире компьютерных наук.
–––
Долгое время у Python был один человек, который имел последнее слово в спорных вопросах — Гвидо ван Россум, создатель языка. Сообщество уважало его решения и доверяло его видению, даже если споры шли жаркие.
Этот статус назывался «Benevolent Dictator For Life» — великодушный пожизненный диктатор. Формулировка ироничная: диктатор — потому что финальное решение за ним, а великодушный — потому что все его решения были в интересах развития Python.
В 2018 году Гвидо сложил с себя полномочия BDFL. Вместо единоличного лидера Python теперь управляется Steering Council — советом из пяти человек, которых выбирают core-разработчики.
Сегодня «BDFL» — это уже часть истории, символ того, как личность может сформировать культуру и ценности целого сообщества.
А вы знали, что Python был одним из немногих крупных языков, у которого долгое время был один признанный лидер?
Команда 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/
Команда Python for Devs подготовила перевод статьи о том, как можно освободить десятки гигабайт места в PostgreSQL без удаления данных и индексов.
TL;DR:
📚 Подробности на Хабр: https://habr.com/ru/articles/944704/
👍4❤2🔥2
🔥 Нововведение, которое изменило Python
В 2018 году Python получил оператор присваивания в выражениях
Что это такое?
Оператор позволяет присвоить значение переменной прямо внутри выражения:
Зачем?
Это упрощает код, избавляя от дублирования. До
⚠️ Почему сообщество было против?
* Новый синтаксис казался слишком «магическим» и непривычным.
* Опасения, что Python потеряет читаемость и станет «вторым Perl».
* Многие считали, что выгода слишком мала, чтобы ломать стиль кода.
Финальное решение
Несмотря на жаркие споры, Гвидо ван Россум лично принял решение в пользу PEP 572. Но цена оказалась высокой: давление и негатив вокруг этой дискуссии подтолкнули его уйти с поста BDFL (Benevolent Dictator For Life).
К чему это привело?
* Python получил «walrus» начиная с версии 3.8.
* Управление языком изменилось навсегда: вместо одного лидера теперь решения принимает Steering Council, избираемый core-разработчиками.
* Этот кризис стал поворотной точкой: Python перешёл к более демократичной модели развития.
🐍 Оператор
А вы используете walrus в своём коде или до сих пор относитесь к нему с недоверием?
В 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 в своём коде или до сих пор относитесь к нему с недоверием?
👍7❤3🔥2
Команда 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🔥3❤2
Какой Python-фреймворк вы предпочитаете для веб-разработки?
Anonymous Poll
39%
Django
8%
Flask
41%
FastAPI
13%
Другой
Forwarded from AI for Devs
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁4👍3🤩1
🫡 Еженедельный дайджест №2
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
Статьи:
– Zen of Python: философия языка
– Как победить циклические импорты в Python простым способом
– Неудачные эксперименты с Vibe Coding на Python
– Как мы освободили 20 ГБ в PostgreSQL без удаления данных
– Какой Python-фреймворк выбрать: Django, Flask или FastAPI?
Посты-коротыши:
– Пасхалка в Python: антигравитация
– PEP 750: t-строки — новый уровень форматирования в Python!
– PythonHero 👑 Великодушный пожизненный диктатор
– Нововведение, которое изменило Python
Опросы:
– Какой Python-фреймворк вы предпочитаете для веб-разработки?
Самый популярный комментарий этой недели – комментарий к статье "Как мы освободили 20 ГБ в PostgreSQL без удаления данных" от пользователя
@python_for_devs
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
Статьи:
– 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🔥3❤2
Команда 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
👍3❤2🔥1
🔧 Целостность данных JSON-колонок в PostgreSQL
JSON всё чаще используют в реляционных базах данных — он позволяет хранить гибкие структуры и избавляет от избыточных связей между таблицами. Но вместе с удобством появляется риск: данные могут потерять предсказуемость.
Если не контролировать содержимое JSON-колонок, туда легко попадут неожиданные значения: числа вместо строк, объекты вместо массивов. В итоге приложение может «сломаться» на ровном месте.
В MySQL проверка JSON поддерживается из коробки. В PostgreSQL для этого есть расширение, которое позволяет валидировать данные по JSON-схеме прямо на уровне БД.
Пример: у нас есть таблица
Мы ожидаем, что поле
Чтобы сохранить гибкость JSON и одновременно обеспечить строгую структуру данных, можно использовать валидацию 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🔥5❤2
Matplotlib, seaborn, Plotly, Altair, Pygal и Bokeh — у каждой свои сильные и слабые стороны: от академических статичных графиков до интерактивных дашбордов для бизнеса.
Выбираем самую подходящую для различных кейсов.
📚 Подробности на Хабр: https://habr.com/ru/articles/946750/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤2
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🔥2❤1
🫡 Django Templates: всё, что вам нужно знать
Команда Python for Devs подготовила перевод большого туторила по Django Templates.
В статье подробно разбирается, как устроен язык шаблонов Django, чем он отличается от Jinja, как правильно наследовать шаблоны и организовать структуру проекта.
Если вы хотите сделать свои Django-приложения более чистыми, поддерживаемыми и быстрыми — этот материал для вас.
📚 Подробности на Хабр: https://habr.com/ru/articles/946762/
Команда Python for Devs подготовила перевод большого туторила по Django Templates.
В статье подробно разбирается, как устроен язык шаблонов Django, чем он отличается от Jinja, как правильно наследовать шаблоны и организовать структуру проекта.
Если вы хотите сделать свои Django-приложения более чистыми, поддерживаемыми и быстрыми — этот материал для вас.
📚 Подробности на Хабр: https://habr.com/ru/articles/946762/
❤3👍3🔥2