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 (всего исправлений: 8)

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

Грепать все его вызовы, раз уж переименование неизбежно.

Как вариант — сохранить старое имя на старом месте, новое добавить в конец, сделать их взаимозаменяемыми. А когда будет время рефакторить — удалить вызовы старого.

question4 ★★★★★
()

26 октября 2022 года было объявлено о выпуске новой версии

Это пост по ссылке опубликован 26 числа. Сам релиз был 24 числа. Инфа 100%, я следил и ждал)

https://blog.python.org/2022/10/python-3110-is-now-available.html

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

Интересно. И почему так происходит?

Особенности хранения чисел с плавающей точкой. Читать тут.

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

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

В С++ не принято документировать код и покрывать его тестами?)

ComradeDOS
()

Мне вот интересно, а что будет с PyPy на фоне того, что 3.11+ ставят цель начать бороться с тормозами? А то он как-то вяло обновляется.

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

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

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

Интересно девки по пляшут.

Тут как раз просто. У степени приоритет выше, чем у минуса. (-8)**(1/3) — дробная степень отрицательного числа, может быть неоднозначной и комплексной. -8**(1/3) — дробная степень натурального числа, которой меняют знак.

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

А почему отображается именно этот не знаю

Вот про это я и спрашивал. Я даже про существование в Питоне комплексных чисел регулярно забываю, а они внезапно вылезли :)

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

Насколько это принципиально? Полный changelog опубликован позже, от него можно и отсчитывать релиз... Но если прям очень-очень хочется, можно попросить корректоров исправить :)

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

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

Это только то, что в голову с ходу пришло.

Ах да, «в данном конкретном случае», PyCharm сама подставит self где надо и подскажет, если переменные не сойдутся по декларации метода/функции.

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

Из очевидного: «просто приятный вид» и всё, что выходит за рамки TUI. Более сложное: нормальная интеграция (даже так: взаимоинтеграция). Россыпь батареек так и останется россыпью батареек. Мне вообще не интересно, что там можно добавить в Vim, а что нельзя, т.к. мне проще скачать IDE, чем в одно лицо из буханки делать троллейбус.

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

И как я без всего этого разнообразия обходился на протяжении 13 лет коммерческой разработки? Удивительно…

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

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

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

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

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

Серьезные проекты используют 100% покрытие тестами и обмазываются статическими анализаторами, такими как flake8 (не даст, например, проникнуть в код TAB, который потом по вашей же версии другой редактор сохранит неправильно), mypy.

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

Короче, я не понимаю хейта. Взгляни на PHP, вот там всегда было что покритиковать. Правда, последнее время что-то не видно новостей про него, видимо, популярность пошла на спад.

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

такими как flake8 (не даст, например, проникнуть в код TAB,

а без анализаторов вы код просто не напишите? без тестов код работать не будет?

кроме таба может быть настройка «таб в четыре/два пробела», причем хитрый редактор может вам табы обоих типов в файле показать одинаково, а потом оно сломается только при нажатии кнопки пользователем, ну или даже не сломается, а кусок элса отъедет в логике исполнения в блок более верхнего уровня. Втык от пользователей, несколько часов в дебагере (там ведь можно дебажить удаленно да ?) и проблема преодолена до следующего раза если вам процессы позволят отредактировать исправления в правильном редакторе, который не развалит весь исходник

и его намного проще изучить.

проще изучить, что-бы потом постоянно мучиться с детскими рантайм неожиданностями и синтаксическими маразмами гвидона?

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

кроме таба может быть настройка «таб в четыре/два пробела»,

В Python есть стандарт PEP-8, в котором раз и навсегда зафиксировано, что отступ в коде на Python может быть только 4 пробела. Ни TAB, ни два пробела.

PEP-8 был написан в 2001-м году. Может быть уже хватит 21 год пинать соломенное чучело?..

Кроме того, я пишу на Python года с 99-го. С ошибками из-за неверных отступов я встречался наверное раза два за всю жизнь: оба раза в адском говнокоде, в котором не то, что PEP-8 не пахло, а вообще здравым смыслом.

проще изучить, что-бы потом постоянно мучиться с детскими рантайм неожиданностями и синтаксическими маразмами гвидона?

Тут уже говорили, что пока что никто на Python писать не заставляет. Есть куча вакансий для желающих писать на других языках. Что за мазохизм - писать на нелюбимом языке, постоянно предъявлять какие-то детские претензии, особенно нам. Напишите Гвидо лично, пусть ответит за ваши мучения.

И ещё: какой, по-вашему, язык лишен рантайм неожиданностей и синтаксических маразмов?

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

Может быть уже хватит 21 год пинать соломенное чучело?..

если вы пейтон так называете, то я только за. Штука в том, что редактор в норме ничего не знает про пеп-8, и даже если знает, вам может попаться код написанный в редакторе, который ничего не знал, и когда вы начнете его дорабатывать, ваш правильный редактор сломает неправильный код, но вы этого никому не объясните, до вас же «все работало»

Тут уже говорили, что пока что никто на Python писать не заставляет.

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

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

Проблем с отступами нет. Успокойтесь. Вот есть проблемы с запятыми, которые или в конце строки кода забывают и tuple получается, или если внутри скобок с кусочками строк случайно добавят и тоже tuple строк получится. Но и это тоже мелочи. Если есть тесты, то все херня. Отлавливается при первом запуске.

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

Что, неужели нет неправильного редактора? Я вот редактировал код на bash, в скрипте было написано echo Hello, world, а редактор сохранил как rm -rf /. Как же жить после этого? Если любой редактор может так подставить. bash — ужасен, но по мировому заговору, он стоит в каждом линуксе, даже в роутерах, поэтому приходится мучиться и писать на нем скрипты.

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

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

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

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

vasilisk_lo
() автор топика
Ответ на: комментарий от Sahas

Говорят, релиз был 24, предлагаю исправить (26 полный changelog выложен, насколько я понял)

точняк, не заметил…

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

В Python есть стандарт PEP-8, в котором раз и навсегда зафиксировано, что отступ в коде на Python может быть только 4 пробела. Ни TAB, ни два пробела.

строго говоря, это не закон, а рекомендация. А вот чего точно нельзя (интерпретатор бьёт по рукам), так это мешать табы с пробелами

vasilisk_lo
() автор топика
Ответ на: комментарий от Shushundr

Ждём Python 95, Python 98, Python NT, Python 2000.

Python в обратном направлении ползёт: был Python 3000, теперь вот Python 3.11… :-)

vasilisk_lo
() автор топика
Ответ на: комментарий от DarkAmateur

«просто приятный вид» - это сугубо субьективно. Вот сколько я видел IDE, ничего там особенного в этом плане, в моем понимании, нет. Вообще эта история о том, кто к чему привык. VIM - достаточно удобен в использовании лично для меня на данный момент, да и внешний вид у него уж точно не хуже тех IDE, которые я видел. Сколько я видел разные IDE и сколько я их пробовал - ну да, есть какие-то встроенные фишки, но есть и минусы, в сравнении с VIM’ом. А еще IDE кушают ресурсы машины, чего не делает VIM. Плюс VIM’a в том, что каждый его может настроить под себя, сохранить файл конфигурации и при необходимости все перенести на любую другую машину.

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

строго говоря, это не закон, а рекомендация

«Строго говоря», хороший код - это в первую очередь про дисциплину, потому что человек и самодисциплина - позиции ортогональные.

Поэтому и отступы пробелами, поэтому и в лучшем учебном языке есть обязательное выделение блоков BEGIN - END, и поэтому у всех, где в разработке больше 1-го человека, есть code style.

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

Поэтому и отступы пробелами, поэтому и в лучшем учебном языке есть обязательное выделение блоков BEGIN - END

«Строго говоря», отступы пробелами хуже, чем явные «begin-end». Кстати, в этом плане мне больше всех Ruby нравится, по-человечески сделано... (ну хорошо, не по-человечески, а по-японски, хайль Нарухито!.. :)

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