0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
1
<p>Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.</p>
2
<p>В новой версии разработчики языка добавили параметризованные диспетчеры контекста. Они позволяют форматировать длинные коллекции диспетчеров контекста в несколько строк. Ранее это можно было реализовать через<strong>import</strong>выражения. Теперь доступен следующий синтаксис:</p>
2
<p>В новой версии разработчики языка добавили параметризованные диспетчеры контекста. Они позволяют форматировать длинные коллекции диспетчеров контекста в несколько строк. Ранее это можно было реализовать через<strong>import</strong>выражения. Теперь доступен следующий синтаксис:</p>
3
with (CtxManager() as example): ... with ( CtxManager1(), CtxManager2() ): ... with (CtxManager1() as example, CtxManager2()): ... with (CtxManager1(), CtxManager2() as example): ... with ( CtxManager1() as example1, CtxManager2() as example2 ): ...<p>Сообщения об ошибках стали умнее. Улучшили<strong>SyntaxErrors</strong>,<strong>IndentationErrors</strong>,<strong>AttributeErrors</strong>и <strong>NameErrors</strong>. Они выводят более точное описание проблемы. Например, в прошлых версиях Python<strong>SyntaxError</strong>для следующего кода возникло бы такое сообщение об ошибке:</p>
3
with (CtxManager() as example): ... with ( CtxManager1(), CtxManager2() ): ... with (CtxManager1() as example, CtxManager2()): ... with (CtxManager1(), CtxManager2() as example): ... with ( CtxManager1() as example1, CtxManager2() as example2 ): ...<p>Сообщения об ошибках стали умнее. Улучшили<strong>SyntaxErrors</strong>,<strong>IndentationErrors</strong>,<strong>AttributeErrors</strong>и <strong>NameErrors</strong>. Они выводят более точное описание проблемы. Например, в прошлых версиях Python<strong>SyntaxError</strong>для следующего кода возникло бы такое сообщение об ошибке:</p>
4
expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, some_other_code = foo()File "example.py", line 3 some_other_code = foo() ^ SyntaxError: invalid syntax<p>А в версии 3.10 интерпретатор выдаёт такую ошибку:</p>
4
expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, some_other_code = foo()File "example.py", line 3 some_other_code = foo() ^ SyntaxError: invalid syntax<p>А в версии 3.10 интерпретатор выдаёт такую ошибку:</p>
5
File "example.py", line 1 expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, ^ SyntaxError: '{' was never closed<p>Дебагер стал более точным и надёжным. Стандарт<a>PEP 626</a>добавил в Python номера строк для отладки, профилирования и мониторящих инструментов.</p>
5
File "example.py", line 1 expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, ^ SyntaxError: '{' was never closed<p>Дебагер стал более точным и надёжным. Стандарт<a>PEP 626</a>добавил в Python номера строк для отладки, профилирования и мониторящих инструментов.</p>
6
<p><a>PEP 634</a>привнёс структурное соответствие шаблонов. Это позволяет вытаскивать информацию из сложных типов данных и выполнять действия для определённых форматов. Синтаксис состоит из match/case-выражения:</p>
6
<p><a>PEP 634</a>привнёс структурное соответствие шаблонов. Это позволяет вытаскивать информацию из сложных типов данных и выполнять действия для определённых форматов. Синтаксис состоит из match/case-выражения:</p>
7
match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard><p><a>PEP 604</a>добавил новый оператор - объединение типов. Он используется для выражений "либо тип X, либо Y" и заменяет<strong>typing.Union.</strong>Например, ниже представлены старая и новая версии:</p>
7
match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard><p><a>PEP 604</a>добавил новый оператор - объединение типов. Он используется для выражений "либо тип X, либо Y" и заменяет<strong>typing.Union.</strong>Например, ниже представлены старая и новая версии:</p>
8
def square(number: Union[int, float]) -> Union[int, float]: return number ** 2def square(number: int | float) -> int | float: return number ** 2<p><a>PEP 613</a>ввёл<strong>TypeAlias</strong>. Он позволяет объявлять псевдонимы для типов более явно:</p>
8
def square(number: Union[int, float]) -> Union[int, float]: return number ** 2def square(number: int | float) -> int | float: return number ** 2<p><a>PEP 613</a>ввёл<strong>TypeAlias</strong>. Он позволяет объявлять псевдонимы для типов более явно:</p>
9
StrCache: TypeAlias = 'Cache[str]' # a type alias LOG_PREFIX = 'LOG[DEBUG]' # a module constant<p>Подробное описание всех изменений можно прочитать на<a>официальном сайте Python</a>.</p>
9
StrCache: TypeAlias = 'Cache[str]' # a type alias LOG_PREFIX = 'LOG[DEBUG]' # a module constant<p>Подробное описание всех изменений можно прочитать на<a>официальном сайте Python</a>.</p>
10
<p>Вот как на это отреагировали пользователи<a>Reddit</a>:</p>
10
<p>Вот как на это отреагировали пользователи<a>Reddit</a>:</p>
11
<p>"Оператор объединения типов - отвал башки".</p>
11
<p>"Оператор объединения типов - отвал башки".</p>
12
Скриншот:<a>Reddit</a><p>"Я думал, что выйдет Python 4. Теперь, получается, нужно ждать ещё несколько лет".</p>
12
Скриншот:<a>Reddit</a><p>"Я думал, что выйдет Python 4. Теперь, получается, нужно ждать ещё несколько лет".</p>
13
Скриншот:<a>Reddit</a><p>"А Я ВСЁ ЕЩЁ УЧУ PYTHON 3.9!!!"</p>
13
Скриншот:<a>Reddit</a><p>"А Я ВСЁ ЕЩЁ УЧУ PYTHON 3.9!!!"</p>
14
Скриншот:<a>Reddit</a><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
14
Скриншот:<a>Reddit</a><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>