Поколение Python 🐍
50.3K subscribers
2K photos
16 videos
6 files
866 links
Серия курсов по языку Python от BEEGEEK 🐝.

Сайт: pygen.ru
Мерч: shop.pygen.ru
Чат: @pygen_ru_comments
Бот: @pygen_ru_bot
Поддержка: @pygen_ru_support

Перечень РКН: https://www.gosuslugi.ru/snet/673650d605391b3bfb5541c0
Download Telegram
Друзья, в октябре этого года выходит версия Python π 3.14. Хотим рассказать о том, что в ней нового! 😎

✅ Python стал еще быстрее. Обновившись до новой версии, можно увеличить прирост производительности своих программ до 30%.

✅ Новые сообщения об ошибках. Если раньше приходилось помнить о том, что значит та или иная ошибка, то теперь этого делать не нужно, так как ошибки стали содержать более детальную информацию.

Приведенный ниже код:
s = set()
seq = [1, 2, 3]
s.add(seq)


в Python 3.13 приводит к возбуждению исключения:
 TypeError: unhashable type: 'list'


в Python 3.14 приводит к возбуждению исключения:
 TypeError: cannot use 'list' as a set element (unhashable type: 'list')


✅ Аннотации больше не вычисляются немедленно. Это происходит по мере необходимости с помощью специальных функций. Такое изменение призвано сделать работу с аннотациями более быстрой и удобной.

✅ Добавлена поддержка ZStandard. Это способ быстрого сжатия данных, который лучше и производительнее, чем обычный zip.

✅ При обработке нескольких типов исключений в одном блоке except убрали необходимость заключать исключения в скобки.

Приведенный ниже код:
try:
raise ValueError
except TypeError, ValueError:
print(‘Исключение обработано’)


в Python 3.13 приводит к возбуждению исключения:
SyntaxError: multiple exception types must be parenthesized


в то время как в Python 3.14 выводит:
Исключение обработано


✅ При использовании в блоке finally одного из операторов return, break или continue теперь всплывает предупреждение SyntaxWarning.

✅ Появится новый вид строк — t-строки. В отличие от f-строк, которые сразу подставляют значения в соответствующие заполнители, t-строки хранят их отдельно и позволяют изменять в процессе формирования строки. Этот вид строк создан с целью обеспечения большей безопасности, например, при формировании HTML-кода или SQL-запросов.

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

🟢 в новой версии модули unittest и calendar научились выводить цветной текст
🟢 появился параметр strict у функции map(), который может запретить обрабатывать коллекции разного размера
🟢 был улучшен экспериментальный режим без GIL
🟢 значительно обновлен Python C API

Ознакомиться со всеми изменениями Python 3.14 можно в документации по ссылке.

Ставьте реакцию:

🔥 — если любите накатывать обновления сразу после выхода
👀 — если ждете, пока выловят все ошибки

#поколениеpython #python #python314
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥139👀91❤209👍55✍3
Друзья, не так давно вышла новая версия Python 3.14, о новых возможностях которой мы кратко рассказывали в этом посте. Сегодня хотим рассказать подробнее об отложенных вычислениях аннотаций. 🖥

▶️ Чтобы в аннотациях указать экземпляр пользовательского типа данных, необходимо использовать имя этого типа. Например, в приведенном ниже коде для переменной cat ожидается значение в виде экземпляра пользовательского класса Cat:

class Cat:
pass

cat: Cat


❗️Однако при попытке указать похожую аннотацию в одном из методов в классе мы получим ошибку.

Приведенный ниже код:

class Cat:
def method(self) -> Cat:
return self


приводит к возбуждению исключения:

NameError: name 'Cat' is not defined


💬 Такое поведение объясняется тем, что весь код в теле класса выполняется до создания самого класса:

1️⃣создаются все атрибуты и методы
2️⃣создается класс
3️⃣атрибуты и методы связываются с этим классом

▶️ Аннотации, в свою очередь, вычисляются сразу при создании объектов. Поэтому, когда мы указываем подобную аннотацию, происходит ошибка: ведь класс еще не существует. Чтобы правильно указать аннотацию, имя класса необходимо заключить в кавычки:

class Cat:
def method(self) -> 'Cat':
return self


🟢 В Python 3.14 поведение изменилось и вычисление аннотаций стало отложенным. Теперь они вычисляются не в момент создания объекта, а только в момент обращения к аннотации, например, с помощью атрибута __annotations__. Поэтому в новой версии Python стало возможным указывать аннотации более гибко.

Приведенный ниже код:
class Cat:
def method(self) -> Cat:
return self

print(Cat.method.__annotations__)


в Python 3.14 выводит:
{'return': <class '__main__.Cat'>}


😉😉😉😚😉 Подробнее о нововведениях в Python 3.14 расскажем в планируемом курсе для самураев. Подпишитесь на новости о курсе на нашем сайте, чтобы первым узнать о его выходе.

Ставьте реакцию:

🔥 — если уже опробовали Python 3.14
👀 — если пользуетесь более старыми версиями

#полезныйматериал #python314 #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀91🔥3111❤84❤‍🔥3🤝2🙉2👨‍💻1