self
: простейшее объяснениеЕсли вы только начинаете изучать Python, то почти наверняка уже столкнулись с
self
. В этом лонгриде мы разберемся, что это и с чем это едят.self
— это ссылка на объектКлючевое слово self используется в методах классов. Оно всегда указывает на текущий экземпляр класса, через который происходит обращение к данным и методам.
class Employee:
def set_salary(self, value):
self.salary = value
e = Employee()
e.set_salary(2000)
print(e.salary)
Когда вы создаёте объект, Python автоматически передаёт этот объект первым аргументом в метод. Принято называть его self, хотя технически вы можете использовать любое имя.
Employee
с методом set_salary
. Этот метод принимает два аргумента:— self — сам объект;
— value — значение, которое мы хотим установить.
self.salary = value
Это значит, что у конкретного объекта
e
создаётся атрибут salary
, которому присваивается переданное значение.
e = Employee()
e.set_salary(2000)
На самом деле Python преобразует этот вызов в:
Employee.set_salary(e, 2000)
print(e.salary) # 2000
Почему без self не обойтись?
self
позволяет объекту хранить собственные данные. Каждый экземпляр класса имеет свой набор атрибутов, и именно через self
мы к ним обращаемся.Например, если создать двух сотрудников:
e1 = Employee()
e2 = Employee()
e1.set_salary(2000)
e2.set_salary(3000)
print(e1.salary) # 2000
print(e2.salary) # 3000
У каждого объекта будет своя зарплата.
#инструмент
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Поговорим на Python. Разработка ПО для начинающих
Простое и дружелюбное введение в программирование для новичков. Вместе с героями книги вы пройдёте путь от идеи до готового приложения, шаг за шагом осваивая основы Python. Читатель научится не только писать код, но и мыслить как программист: планировать, отлаживать и находить решения. Книга построена на практике — вы создадите собственное онлайн-меню для кафе и постепенно поймёте, как устроена разработка. Это отличный старт для детей и студентов.
#книга #обучение
@zen_of_python
Простое и дружелюбное введение в программирование для новичков. Вместе с героями книги вы пройдёте путь от идеи до готового приложения, шаг за шагом осваивая основы Python. Читатель научится не только писать код, но и мыслить как программист: планировать, отлаживать и находить решения. Книга построена на практике — вы создадите собственное онлайн-меню для кафе и постепенно поймёте, как устроена разработка. Это отличный старт для детей и студентов.
#книга #обучение
@zen_of_python
✍1❤1🆒1
Bazel | Сборка и тестирование, как в FAANG
Опенсорсная версия внутреннего инструмента Google, которая делает процесс сборки эффективнее:
— Дает пересобрать только те участки кода, где были изменения (Incremental Builds);
— Позволяет сдруживать Python-код с другими ЯП;
— Дружит с CI / CD;
— Поддерживается на популярных ОС: Windows, Linux, macOS.
#инструмент
@zen_of_python
Опенсорсная версия внутреннего инструмента Google, которая делает процесс сборки эффективнее:
— Дает пересобрать только те участки кода, где были изменения (Incremental Builds);
— Позволяет сдруживать Python-код с другими ЯП;
— Дружит с CI / CD;
— Поддерживается на популярных ОС: Windows, Linux, macOS.
#инструмент
@zen_of_python
✍1🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
memory_graph | Визуализация кода
Помощник в изучении и отладке, который визуализирует состояние программы: переменные, структуры данных и стек вызовов. Он позволит наглядно понять ключевые концепции — ссылки и изменяемость и проч.
С помощью графов можно визуализировать взаимосвязи между объектами, что они содержат и как меняются во времени. Удобен как для студентов и начинающих программистов, так и для тех, кто хочет глубже осознать, как Python работает «под капотом».
Модуль можно использовать даже в ноутбуках.
#инструмент
@zen_of_python
Помощник в изучении и отладке, который визуализирует состояние программы: переменные, структуры данных и стек вызовов. Он позволит наглядно понять ключевые концепции — ссылки и изменяемость и проч.
С помощью графов можно визуализировать взаимосвязи между объектами, что они содержат и как меняются во времени. Удобен как для студентов и начинающих программистов, так и для тех, кто хочет глубже осознать, как Python работает «под капотом».
Модуль можно использовать даже в ноутбуках.
#инструмент
@zen_of_python
👏6
Из медтеха в Python-разработчики: как менторство помогло найти работу в IT
Когда переходишь из медтеха в Python-разработку, путь может оказаться очень тернистым. В статье на Tproger рассмотрели, как наставник помог начинающему совершить этот переход, вплоть до первого трудоустройства.
Материал вдохновляет на то, чтобы не бояться менять направление и искать менторов, ведь их опыт может сократить время и увеличить шанс успеха. Полезно всем, кто думает о смене профессии или уже учится, но не знает, как применить знания на практике и выйти на рынок.
#обучение
@zen_of_python
Когда переходишь из медтеха в Python-разработку, путь может оказаться очень тернистым. В статье на Tproger рассмотрели, как наставник помог начинающему совершить этот переход, вплоть до первого трудоустройства.
Материал вдохновляет на то, чтобы не бояться менять направление и искать менторов, ведь их опыт может сократить время и увеличить шанс успеха. Полезно всем, кто думает о смене профессии или уже учится, но не знает, как применить знания на практике и выйти на рынок.
#обучение
@zen_of_python
❤1✍1🍌1
Вопрос подписчика
Задает @StSav012:
«Есть ли у кого хороший мануал по lazy loading initialization? Чтобы и в runtime работало, и IDE не ругалась».
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
#обсуждение
@zen_of_python
Задает @StSav012:
«Есть ли у кого хороший мануал по lazy loading initialization? Чтобы и в runtime работало, и IDE не ругалась».
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
#обсуждение
@zen_of_python
❤1
ИИ впервые создал новые вирусы, которые убивают устойчивые к антибиотикам бактерии
Проблема растущей резистентности к антибиотикам становится всё более серьёзной — многие привычные лекарства уже не действуют. Учёные использовали языковую модель, обученную на миллионах фаговых геномов, чтобы создать варианты, которых не было в природе, и успешно протестировали их на устойчивых штаммах. И все это на Python. Некоторые из сгенерированных вирусов смогли преодолеть устойчивость всего за 1-5 поколений, в то время как оригинальный фаг без ИИ-адаптации не справлялся. Работа открывает путь к «кастомной фаготерапии» — лечению, адаптированному под конкретную бактериальную угрозу.
#факт
@zen_of_python
Проблема растущей резистентности к антибиотикам становится всё более серьёзной — многие привычные лекарства уже не действуют. Учёные использовали языковую модель, обученную на миллионах фаговых геномов, чтобы создать варианты, которых не было в природе, и успешно протестировали их на устойчивых штаммах. И все это на Python. Некоторые из сгенерированных вирусов смогли преодолеть устойчивость всего за 1-5 поколений, в то время как оригинальный фаг без ИИ-адаптации не справлялся. Работа открывает путь к «кастомной фаготерапии» — лечению, адаптированному под конкретную бактериальную угрозу.
#факт
@zen_of_python
🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
skyvern | Скрейпинг с LLM + CV
Опираться при парсинге на DOM / xPath нынче не модно... Инструмент использует GPT и компьютерное зрение, чтобы «понимать» содержимое веб-страницы и выполнять нужные вам действия. Заодно и токенов сэкономите: ведь весь HTML-код страницы читать не требуется.
Доступен в РФ: да
Цена: бесплатно
@prog_tools
Опираться при парсинге на DOM / xPath нынче не модно... Инструмент использует GPT и компьютерное зрение, чтобы «понимать» содержимое веб-страницы и выполнять нужные вам действия. Заодно и токенов сэкономите: ведь весь HTML-код страницы читать не требуется.
Доступен в РФ: да
Цена: бесплатно
@prog_tools
✍2❤1
Python. Экспресс-курс
Книга для программистов, имеющих опыт с другими ЯП. В издании представлены актуальные возможности Python 3 с учетом последних 5 лет.
Последние главы книги посвящены работе с большими данными, что делает её полезной для тех, кто планирует использовать Python в аналитике и машинном обучении.
#книга
@zen_of_python
Книга для программистов, имеющих опыт с другими ЯП. В издании представлены актуальные возможности Python 3 с учетом последних 5 лет.
Последние главы книги посвящены работе с большими данными, что делает её полезной для тех, кто планирует использовать Python в аналитике и машинном обучении.
#книга
@zen_of_python
👍5🗿3❤1
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте.
#обсуждение
@zen_of_python
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте.
#обсуждение
@zen_of_python
❤3
Смысл жизни по Монти Пайтону (1983)
Можно сколько угодно смотреть мемы про питонов, но язык назван в честь комиков Monty Python.
Если вам нужен фильм на выходные, и вы хотите знать, чем же так юмористы вдохновили создателя ЯП Гвидо ван Россума, посмотрите одну из их шедевральных полнометражек — «Смысл жизни по Монти Пайтону».
Это серия скетчей, каждый из которых как бы упражняет вашу способность справляться с абсурдом действительности. То выгоревшие страховщики, уплывшие покорять на корабле-доме другой континент, то дети, поющие о небогоугодных презервативах, то обжора, которого разрывает на части прямо в ресторане. Таких чеканутых сюжетов еще поискать.
#факт
@zen_of_python
Можно сколько угодно смотреть мемы про питонов, но язык назван в честь комиков Monty Python.
Если вам нужен фильм на выходные, и вы хотите знать, чем же так юмористы вдохновили создателя ЯП Гвидо ван Россума, посмотрите одну из их шедевральных полнометражек — «Смысл жизни по Монти Пайтону».
Это серия скетчей, каждый из которых как бы упражняет вашу способность справляться с абсурдом действительности. То выгоревшие страховщики, уплывшие покорять на корабле-доме другой континент, то дети, поющие о небогоугодных презервативах, то обжора, которого разрывает на части прямо в ресторане. Таких чеканутых сюжетов еще поискать.
#факт
@zen_of_python
❤🔥3😱1
А во сколько лет вы узнали, что можно использовать любое количество пробелов для отступа, главное, чтобы они были одинаковыми в пределах одного блока? Код ниже не выдаст ошибку (даже если вызвать say_hi():
#кек
@zen_of_python
#кек
@zen_of_python
👍8
Шпаргкалка SQL.pdf
1.2 MB
Шпаргалка SQL для собесов
Помимо базы еще полезное про:
— Вложенные запросы (CTE);
— JOIN'ы;
— Оконные функции;
— Подзапросы;
— SET;
— GROUP BY;
— LAG;
— CASE и проч.
#обучение
@zen_of_python
Помимо базы еще полезное про:
— Вложенные запросы (CTE);
— JOIN'ы;
— Оконные функции;
— Подзапросы;
— SET;
— GROUP BY;
— LAG;
— CASE и проч.
#обучение
@zen_of_python
❤4👍2
Что такое JSON и зачем он нужен
JSON (JavaScript Object Notation) — текстовый формат для обмена данными, удобный для людей и машин. Он возник в экосистеме JavaScript, но стал язык-независимым стандартом для API, конфигураций и документных хранилищ. Формат простой: объекты (пар «ключ: значение») и массивы — это основные строительные блоки.
Почему Python-разработчику это важно:
🔘 JSON часто используется в web-API, логах, конфигурациях и при обмене данными между сервисами.
🔘 Python имеет встроенный модуль json, который делает сериализует (Python → JSON) и десериализует (JSON → Python).
Синтаксис JSON
🔘 Строки — в двойных кавычках (
🔘 Логические значения — в нижнем регистре:
🔘 Отсутствующее значение —
🔘 Нельзя оставлять комментарии и нельзя ставить завершающие запятые после последнего элемента.
Валидный JSON:
Модуль json
Главные функции одноименного модуля стандартной библиотеки:
🔘
🔘
🔘
🔘
Эти функции следуют стандартному отображению типов: словари → объекты, списки → массивы, строки → строки, числа → числа,
Полезные параметры dumps / dump
При сериализации полезны параметры:
🔘
🔘
🔘
🔘
🔘
Маппинг типов
При загрузке JSON в Python выполняется обратное отображение типов:
*
*
*
*
*
*
JSON-ключи — всегда строки. Если у вас в исходном Python-словаре были числовые ключи (например
Полезные утилиты и приёмы
🔘
🔘 Онлайн-валидаторы (например, JSONLint) и редакторы с подсветкой помогут быстро найти синтаксические ошибки (комментарии, лишние запятые и т. п.).
Подборка примеров
Читаем JSON из файла:
Записываем с красивым форматированием:
Сериализуем datetime:
Проверяем валидность JSON в CLI
#основы
@zen_of_python
JSON (JavaScript Object Notation) — текстовый формат для обмена данными, удобный для людей и машин. Он возник в экосистеме JavaScript, но стал язык-независимым стандартом для API, конфигураций и документных хранилищ. Формат простой: объекты (пар «ключ: значение») и массивы — это основные строительные блоки.
Почему Python-разработчику это важно:
Синтаксис JSON
"..."
);true / false
(в Python — True / False
);null
(в Python → None
);Валидный JSON:
{
"name": "Frieda",
"isDog": true,
"hobbies": ["eating", "sleeping"],
"age": 8,
"address": {"home": ["Berlin", "Germany"], "work": null}
}
Модуль json
Главные функции одноименного модуля стандартной библиотеки:
json.dumps(obj, **opts)
— сериализует Python-объект в строку JSON;json.dump(obj, fp, **opts)
— сериализует и записывает в файл-объект;json.loads(s)
— парсит JSON-строку в Python-объект;json.load(fp)
— считывает JSON из файла и парсит.Эти функции следуют стандартному отображению типов: словари → объекты, списки → массивы, строки → строки, числа → числа,
True
/ False
→ true
/ false
, None
→ null
.
import json
data = {"name": "Frieda", "age": 8, "is_dog": True}
s = json.dumps(data) # --> '{"name": "Frieda", "age": 8, "is_dog": true}'
obj = json.loads(s) # --> {'name': 'Frieda', 'age': 8, 'is_dog': True}
Полезные параметры dumps / dump
При сериализации полезны параметры:
indent
— делает вывод читабельным (pretty print) (например, indent=2);sort_keys=True
— сортирует ключи объекта по алфавиту;separators
— позволяет контролировать символы между элементами (полезно для минификации);ensure_ascii=False
— по умолчанию json экранирует не-ASCII символы; если хотите сохранить UTF-8 в читаемом виде, ставьте False;skipkeys=True
— пропускает неподдерживаемые типы ключей вместо TypeError (использовать осторожно — вы можете потерять данные).Маппинг типов
При загрузке JSON в Python выполняется обратное отображение типов:
*
object
→ dict
*
array
→ list
*
string
→ str
*
number
→ int
/ float
*
true`/`false
→ True`/`False
*
null
→ None
JSON-ключи — всегда строки. Если у вас в исходном Python-словаре были числовые ключи (например
{1: "a"}`), при сериализации они станут строками (`"1"`). После `json.loads()
вы получите ключи как строки — Python не "угадает" исходный тип. Это частая ловушка при конвертации словарей ключами-числами.Полезные утилиты и приёмы
python -m json.tool
— встроенная утилита для форматирования/проверки JSON в терминале (можно использовать для prettify/minify);Подборка примеров
Читаем JSON из файла:
import json
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
Записываем с красивым форматированием:
with open("data_pretty.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, sort_keys=True, ensure_ascii=False)
Сериализуем datetime:
from datetime import datetime
import json
def default(o):
if isinstance(o, datetime):
return o.isoformat()
raise TypeError
json.dumps({"now": datetime.utcnow()}, default=default)
Проверяем валидность JSON в CLI
python -m json.tool input.json > /dev/null
# код возврата 0 — валидный JSON
#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
Фабрики в Python
В программировании довольно часто встречается задача: в зависимости от входных данных нужно выбрать подходящий класс для обработки. Например, у нас есть XML-файлы и JSON-файлы, и мы хотим написать систему, которая будет их импортировать.
На первый взгляд решение простое — внутри метода проверять расширение файла и создавать соответствующий объект. Но у такого подхода есть несколько серьёзных недостатков. Именно здесь на помощь приходит паттерн «Фабрика».
Рассмотрим упрощённый пример кода:
На первый взгляд код рабочий, но здесь нарушаются два принципа SOLID:
1️⃣ Принцип единственной ответственности (Single Responsibility Principle): класс Document отвечает сразу за создание объектов XMLImporter, JSONImporter и их использование.
2️⃣ Принцип открытости / закрытости (Open / Closed Principle).
Если появится новый формат (например, CSV), придётся снова лезть в метод import_file и расширять блок if / elif.
Решение: фабрика
Чтобы убрать ответственность за создание объектов из класса Document, вводится так называемася фабрика. Это объект, который берёт на себя ответственность за создание других объектов. Она не избавляет нас полностью от изменения кода при добавлении новых форматов, но значительно улучшает читаемость, гибкость и расширяемость системы.
Теперь
Преимущества фабрики
1️⃣ Изоляция ответственности: логика создания объектов теперь сосредоточена только в одном месте — в ImporterFactory.
2️⃣ Гибкость: если нужно добавить поддержку нового формата (CSV, YAML и т.д.), достаточно изменить фабрику, не трогая Document.
3️⃣ Удобное тестирование: в тестах можно подменить фабрику на «фиктивную» (mock) и проверять работу Document независимо от импортеров.
Что дальше?
Фабрика — это базовый паттерн. На его основе строятся более сложные подходы, например:
🔘 Factory Method — когда создание объектов делегируется подклассам.
🔘 Abstract Factory — когда фабрика создаёт целые семейства объектов, согласованных между собой.
#основы
@zen_of_python
В программировании довольно часто встречается задача: в зависимости от входных данных нужно выбрать подходящий класс для обработки. Например, у нас есть XML-файлы и JSON-файлы, и мы хотим написать систему, которая будет их импортировать.
На первый взгляд решение простое — внутри метода проверять расширение файла и создавать соответствующий объект. Но у такого подхода есть несколько серьёзных недостатков. Именно здесь на помощь приходит паттерн «Фабрика».
Рассмотрим упрощённый пример кода:
class XMLImporter:
def __init__(self, filename):
self.filename = filename
def execute(self):
print("XML imported from", self.filename)
class JSONImporter:
def __init__(self, filename):
self.filename = filename
def execute(self):
print("JSON imported from", self.filename)
class Document:
def import_file(self, filename):
if filename.endswith(".xml"):
importer = XMLImporter(filename)
elif filename.endswith(".json"):
importer = JSONImporter(filename)
data = importer.execute()
document = Document()
document.import_file("text.xml")
document.import_file("text.json")
На первый взгляд код рабочий, но здесь нарушаются два принципа SOLID:
Если появится новый формат (например, CSV), придётся снова лезть в метод import_file и расширять блок if / elif.
Решение: фабрика
Чтобы убрать ответственность за создание объектов из класса Document, вводится так называемася фабрика. Это объект, который берёт на себя ответственность за создание других объектов. Она не избавляет нас полностью от изменения кода при добавлении новых форматов, но значительно улучшает читаемость, гибкость и расширяемость системы.
class ImporterFactory:
def get_importer(self, filename):
if filename.endswith(".xml"):
return XMLImporter(filename)
elif filename.endswith(".json"):
return JSONImporter(filename)
Теперь
Document
больше не знает, как именно создаются нужные классы. Ему просто передают готовую фабрику:
class Document:
def __init__(self, factory):
self.factory = factory
def import_file(self, filename):
importer = self.factory.get_importer(filename)
data = importer.execute()
factory = ImporterFactory()
document = Document(factory)
document.import_file("text.xml")
document.import_file("text.json")
Преимущества фабрики
Что дальше?
Фабрика — это базовый паттерн. На его основе строятся более сложные подходы, например:
#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4🔥2❤1
typing-extensions | Машинка времени для фичей ЯП
Вечный участник рейтинга самых скачиваемых библиотек PyPi, модуль предоставляет дополнительные возможности для аннотаций типов, которые либо были добавлены в стандартный модуль
Тот случай, когда переходить на новую версию языкового пакета нет желания, а использовать новую фичу есть.
#инструмент
@zen_of_python
Вечный участник рейтинга самых скачиваемых библиотек PyPi, модуль предоставляет дополнительные возможности для аннотаций типов, которые либо были добавлены в стандартный модуль
typing
в более поздних версиях Python, либо являются экспериментальными и ещё не включены в стандарт. Тот случай, когда переходить на новую версию языкового пакета нет желания, а использовать новую фичу есть.
#инструмент
@zen_of_python
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
leapcell.io | Деплой-сервис для вашего сайта / API
Аналог Heroku, система дарит возможность задеплоить до 20 проектов на JavaScript / Python / Go / Rust с 3-мя ядрами CPU на каждый из них. Дают одну сущность PostgreSQL. Как и во многих аналогичных деплой-сервисах, коннектится с вашим GitHub-аккаунтом и пуллит оттуда. Обещают отсутствие скрытых платежей за «выдающийся» трафик.
Доступен в РФ: да
Минимальная цена: есть Freemium
@prog_tools
Аналог Heroku, система дарит возможность задеплоить до 20 проектов на JavaScript / Python / Go / Rust с 3-мя ядрами CPU на каждый из них. Дают одну сущность PostgreSQL. Как и во многих аналогичных деплой-сервисах, коннектится с вашим GitHub-аккаунтом и пуллит оттуда. Обещают отсутствие скрытых платежей за «выдающийся» трафик.
Доступен в РФ: да
Минимальная цена: есть Freemium
@prog_tools
👍2✍1🗿1
Вышел Django 6.0 (альфа-версия)
17 сентября 2025 года команда Django представила шестую версию фреймворка. Это новый крупный релиз, в котором есть несколько фундаментальных улучшений.
Поддержка новых версий Python
🔘 Django 6 официально поддерживает Python 3.12 и 3.13;
🔘 Поддержка Python 3.10 и 3.11 прекращена.
Поддержка CSP
Content Security Policy (CSP) — это механизм безопасности веб-приложений, который через специальные HTTP-заголовки ограничивает, какие скрипты, стили и ресурсы может загружать и выполнять браузер, защищая от XSS и похожих атак.
Ранее для CSP приходилось ставить сторонние пакеты. Теперь же:
🔘 CSP встроен в ядро Django;
🔘 Поддерживаются nonce-атрибуты для защиты inline-скриптов;
🔘 Настройка выполняется через middleware и шаблонные процессоры;
Это сократит ваш requirements.txt и обеспечит больше безопасности «из коробки».
Фоновые задачи
Одно из самых ожидаемых нововведений: встроенная система фоновых задач. Новый декоратор
🔘 ImmediateBackend — выполняет задачу сразу (удобно для разработки)
🔘 DummyBackend — добавляет задачу в очередь, но не исполняет (для тестирования логики)
В будущем планируются интеграции с реальными брокерами (Postgres, Redis, RabbitMQ).
Template Partials: переиспользуемые компоненты
Фронтенд-разработчикам понравится. Новый механизм
🔘 Позволяет определять фрагменты шаблона через
🔘 Поддерживает параметры и повторное использование в циклах и разных местах страницы;
🔘 Устраняет дублирование кода, упрощает дизайн-системы на Django Templates.
Это шаг в сторону компонентного подхода, знакомого пользователям React / Vue, но в экосистеме Django.
Другие изменения
🔘 В циклах теперь можно использовать
🔘 Более корректная работа с Unicode, MIME-типами и вложениями в емейлах;
🔘 Обновления для PostgreSQL и других баз данных;
🔘 Традиционные улучшения производительности и совместимости;
🔘 Альфа-релиз означает feature freeze: новые возможности добавлены, впереди тестирование и исправление багов.
#факт
@zen_of_python
17 сентября 2025 года команда Django представила шестую версию фреймворка. Это новый крупный релиз, в котором есть несколько фундаментальных улучшений.
Поддержка новых версий Python
Поддержка CSP
Content Security Policy (CSP) — это механизм безопасности веб-приложений, который через специальные HTTP-заголовки ограничивает, какие скрипты, стили и ресурсы может загружать и выполнять браузер, защищая от XSS и похожих атак.
Ранее для CSP приходилось ставить сторонние пакеты. Теперь же:
Это сократит ваш requirements.txt и обеспечит больше безопасности «из коробки».
Фоновые задачи
Одно из самых ожидаемых нововведений: встроенная система фоновых задач. Новый декоратор
@task
позволяет превращать любую функцию в асинхронное задание.В будущем планируются интеграции с реальными брокерами (Postgres, Redis, RabbitMQ).
Template Partials: переиспользуемые компоненты
Фронтенд-разработчикам понравится. Новый механизм
partials
:partialdef
;Это шаг в сторону компонентного подхода, знакомого пользователям React / Vue, но в экосистеме Django.
Другие изменения
forloop.length
, чтобы узнать размер итерации (ранее были только forloop.counter
, forloop.first
, forloop.last
и т.п.)#факт
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Что нового в Python 3.14: разбираем главные изменения
В статье на Tproger рассказали о ключевых нововведениях Python 3.14:
— t-строки (строки-шаблоны с префиксом
— отложенные аннотации типов, которые вычисляются только при первом доступе, что решает проблемы с циклическими импортами;
— новые методы pathlib (
#факт
@zen_of_python
В статье на Tproger рассказали о ключевых нововведениях Python 3.14:
— t-строки (строки-шаблоны с префиксом
t
), которые не вычисляются сразу, а дают разработчику контроль над подстановкой значений;— отложенные аннотации типов, которые вычисляются только при первом доступе, что решает проблемы с циклическими импортами;
— новые методы pathlib (
copy
, move
) и другие новшества.#факт
@zen_of_python