LINUX.ORG.RU

Вышел Python 3.11

 ,


3

6

24 октября 2022 года объявлено о выпуске новой версии популярного языка программирования Python 3.11.

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

Основные улучшения заключаются в увеличении производительности интерпретатора CPython на 10-60% (в среднем в 1.25 раз по сравнению с Python 3.10). Этого удалось достичь в первую очередь за счёт оптимизации запуска интерпретатора, а также при помощи ускорения вызовов функций (в частности, за счёт оптимизации внутренней структуры фрейма; ранее фреймы содержали дополнительную информацию об отладке и управлении памятью).

Среди других изменений и улучшений можно отметить следующие:

  • Поддержка групп исключений – возможность создания и обработки нескольких несвязанных исключений одновременно (PEP 654).
  • Более точное указание местоположения ошибок в сообщениях об ошибках (PEP 657).
  • Различные улучшения и добавления в аннотациях типов, в частности, новая аннотация Self, указывающая, что метод возвращает объект данного класса (PEP 673).
  • Новый модуль стандартной библиотеки tomllib для работы с форматом TOML (PEP 680).
  • Множество улучшений в модулях стандартной библиотеки, в частности, asyncio, datetime, enum, functools, inspect, math и других. Например, в модуль math добавлены такие крайне полезные функции, как exp2 (возведение 2 в степень) и cbrt (кубический корень).

Кроме того, продолжена работа по удалению из стандартной библиотеки устаревших или мало используемых функций и модулей. В частности, помечены как устаревшие (для удаления в Python 3.13) следующие модули: pipes, crypt, ossaudiodev и некоторые другие не менее важные. Отметим, что для помеченных к удалению модулей имеются альтернативные реализации, либо их функционал (если он кому-то нужен) распределён среди оставшихся модулей. например, вместо модуля crypt рекомендуется использовать модуль hashlib, а вместо pipessubprocess.

В целом, в данный релиз вошло более 9500 исправлений и улучшений от множества разработчиков по всему миру. Ответственный за данный выпуск – Pablo Galindo Salgado.

>>> Список изменений от 26 октября



Проверено: hobbit ()

Ответ на: комментарий от hobbit

ага, ждал-ждал, пока кто напишет, да так и не дождался… всё приходится делать самому… :-/

Кстати, забыл добавить, что ускорение особенно ощутимо для запуска небольших скриптов. Может, добавишь?..

vasilisk_lo ()
Последнее исправление: vasilisk_lo (всего исправлений: 1)
Ответ на: комментарий от vasilisk_lo

ускорение особенно ощутимо для запуска небольших скриптов

Интересно, как это отразится на биллинге лямбд. Видимо положительно.

Irben ★★ ()

Бедные хейтеры, их главный аргумент против Python - будет улетучиваться с каждой новой версией ;)

th3m3 ★★★★★ ()
Ответ на: комментарий от Syncro
Python 3.11.0 (main, Oct 27 2022, 16:45:23) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance
Sahas ★★★★★ ()

Поддержка групп исключений

Очень занятно, надо глянуть

Вообще крутой релиз, но чую обновляться на него будет больно. Для начала надо на 3.10 переехать где половину typing сломали

upcFrost ★★★★★ ()
Ответ на: комментарий от th3m3

А в чем аргумент? В том что он тормозной? Так будет всегда, это же динамическая скриптушечка с медленными key-value объектами вместо нормальных структур и скаляров.

MOPKOBKA ★★ ()
Ответ на: комментарий от th3m3

Да пистон нормальный язык. Нихрена не быстрый, но один единственный запрос в базу по сети в соседний регион резко уравнивает его производительность со всеми остальными

upcFrost ★★★★★ ()

Ура! Долгой жизни Python'у!

saahriktu ★★★★★ ()

ранее фреймы содержали дополнительную информацию об отладке и управлении памятью

К чему приведёт её отсутствие?

Или ею никто не пользовался?

question4 ★★★★★ ()
Ответ на: комментарий от question4

ломались в продакшене причем имплицитно, т.е. пока юзер егог не словит и не поймешь, а когда поймешь, то заманаешься восстанавливать потому что после 2-3 уровня вложенности уже не понимаешь где выход из блока

Syncro ★★★★★ ()

кто пересчитывал порядок аргументов метода прибавляя 1 для селф поднимите руку

Syncro ★★★★★ ()
Ответ на: комментарий от Syncro

то заманаешься восстанавливать потому что после 2-3 уровня вложенности уже не понимаешь где выход из блока

В языках со скобками не сильно проще, если говнокод. Говнокод остаётся говнокодом на любом языке. Я у себя на работе изматерился, когда искал ошибку в C++ методе, в котором тоже 3-4 уровня вложенности, и на каждом по 100+ строк… Хотелось найти автора и вломить ему.

emorozov ()
Ответ на: комментарий от emorozov

ну дело не в говнокоде, а просто в настройках редактора может быть. С с++ все сразу понятно, никто не говорит, что это легкий, модный, продуктивный язычок.

Syncro ★★★★★ ()
Ответ на: комментарий от emorozov

в пипоне ведь нельзя взять блок условия в скобки и записать в две строчки, поэтому вложенный иф это норма, ну или в цикле

Syncro ★★★★★ ()

Крутяк! Поздравляю всех причастных!

shkolnick-kun ★★★★★ ()
Ответ на: комментарий от Syncro

Не забывайте, что ЯП для того, чтобы писать код, а не читать. Те, несчастные, что вынуждены читать код, со временем привыкают.

vvn_black ★★★★★ ()
Ответ на: комментарий от vvn_black

у методов классов требуется обязательно объявлять ссылку на контекст класса (селф), а при вызове он опускается, т.е. первый аргумент это второй в объявлении если у вас нет под рукой среды разработки за тыщу баксов придется считать и прибавлять или вычитать, т.е. будете путать и материться

Syncro ★★★★★ ()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от Syncro

Сначала объявляют, потом вызывают.

Те, которые любят людей, ещё и документируют. А совсем хорошие ещё и именованные аргументы используют по делу.

Никогда не возникало желания посчитать аргументы. К self «привыкаешь» после первой реализации своего класса.

vvn_black ★★★★★ ()
Ответ на: комментарий от vvn_black

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

Syncro ★★★★★ ()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от Syncro

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

vvn_black ★★★★★ ()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от Syncro

у методов классов требуется обязательно объявлять ссылку на контекст класса (селф), а при вызове он опускается, т.е. первый аргумент это второй в объявлении если у вас нет под рукой среды разработки за тыщу баксов придется считать и прибавлять или вычитать, т.е. будете путать и материться

Для любого человека это представляет трудность лишь максимум первые три раза. Потом уже на автомате понимаешь, в чём дело.

emorozov ()
Ответ на: комментарий от emorozov

нэт, это постоянный геморрой как отступы или условия без скобок, ни минуты без боротьбы с компилятором

Syncro ★★★★★ ()
Ответ на: комментарий от Syncro

ни минуты без боротьбы

Это как специально покупать обувь на размер меньше или больше, и бороться потом с мозолями и натоптышами.

Зачем пользоваться инструментом, если его использование борьба? Есть же выбор.

vvn_black ★★★★★ ()
Ответ на: комментарий от Syncro

Кто «он»? Выбор или инструмент? Как то Вы по гамлетовски изьясняетесь:-)

AntonI ★★★ ()
Ответ на: комментарий от pnil
$ cat mymathcbrt.py
def my_math_cbrt(x):
    y = abs(x) ** (1/3)
    if x < 0:
        return -1 * y
    else:
        return y

print(my_math_cbrt(8))
print(my_math_cbrt(-8))
$ python3 mymathcbrt.py
2.0
-2.0
$
saahriktu ★★★★★ ()
Ответ на: комментарий от Syncro

кто пересчитывал порядок аргументов метода

Нормальные люди пользуются именами переменных, если их слишком много.

question4 ★★★★★ ()
Ответ на: комментарий от question4

Уравнение x^3=-8 имеет три корня:

>>> (1.0000000000000002+1.7320508075688772j)**3
(-8+3.1086244689504383e-15j)
>>> (1.0000000000000002-1.7320508075688772j)**3
(-8-3.1086244689504383e-15j)
>>> (-2)**3
-8

А почему отображается именно этот не знаю, может из-за того, что аргумент меньше.

pnil ()
Последнее исправление: pnil (всего исправлений: 1)
Ответ на: комментарий от question4

информации об том, что код, может сломаться, но не сразу, если вы его сохранили редактором с другими настройками отступов впролне достаточно.

Syncro ★★★★★ ()
Ответ на: комментарий от vvn_black

вы один ваш именнованный аргумент переименновали в объявлении, а у метода сотни использований в десятках модулей, на нож выберите или на бутылку?

Syncro ★★★★★ ()
Ответ на: комментарий от Syncro

Напрашивается аналогия про стеклянный уд.

Наверное, в таком случае надо подумать, прежде чем менять интерфейс.

vvn_black ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.