LINUX.ORG.RU

Python 3.13

 , ,


1

5

После года разработки вышла новая стабильная версия интерпретируемого языка программирования Python 3.13. Релиз включает изменения в собственно языке и его стандартной библиотеке. К важнейшим изменениям относятся использование нового интерактивного интерпретатора по умолчанию, экспериментальная поддержка работы в режиме free-threaded (т. е. с отключением global interpreter lock) (PEP 703), и JIT-компилятор (PEP 744).

С этого релиза осуществлён переход на новый цикл релизов Python (Annual Release Cycle for Python, PEP 602), в связи со стремлением расширить период «полной поддержки» новых выпусков:

  • Python 3.9–3.12 имеют полтора года полной поддержки, за ними следует три с половиной года исправления брешей в безопасности.
  • Python 3.13 и более поздние релизы будут иметь два года полной поддержки и три года исправлений уязвимостей.

Продолжается работа по усовершенствованию сообщений об ошибках. Теперь traceback’и по умолчанию подсвечиваются цветом. Встроенная функция locals() теперь имеет определённую семантику для изменения возвращаемого меппинга (PEP 667), а параметры типов (typing.TypeVar, typing.ParamSpec, typing.TypeVarTuple) поддерживают значения по умолчанию (PEP 696).

Изменения стандартной библиотеки включают удаление устаревших API и модулей (aifc, audioop, cgi, cgitb, chunk, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu и xdrlib), а также привычные улучшения в области дружелюбия к пользователю и корректности. Несколько модулей исключены из поставки в связи с объявлением их устаревшими в Python 3.11 (PEP 594), в том числе инструмент и библиотека 2to3.

Из улучшений безопасности стоит отметить, что ssl.create_default_context() устанавливает флагами по умолчанию ssl.VERIFY_X509_PARTIAL_CHAIN и ssl.VERIFY_X509_STRICT.

Добавлена поддержка платформ: Apple iOS и Android теперь официально поддерживаемые платформы (tier 3) (PEP 730, 738). wasm32-wasi поддерживается на уровне tier 2, прекращена официальная поддержка wasm32-emscripten.

Для более основательного ознакомления с нововведениями релиза, обращайтесь к официальной документации (по библиотеке, по языку). Руководствуйтесь статьей «Переход на Python 3.13» для обновления своих проектов на новую версию языка. Также см. changelog.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 7)

Ответ на: комментарий от alt-tab-let

str ничего не конвертирует, он просто дергает методы __str__ и __repr__, которые нужны для вывода в терминал. Запоминай: str.encode, bytes.decode

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

А плюс ничего не плюсит, а просто дёргает методы. Как и всё остальное. Причём тут это? Давай теперь при каждом 3 + 5 тоже чего-нибудь добавлять, пока не вызовешь хитрый метод.

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

str() - это строковое представление объекта.

Для преобразования из одного типа в другой - decode() и encode().

Что тебе еще не понятно?

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

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

Я говорил про то, что ввод и вывод этих строк Python организует через UTF-8. А тех же строк в однобайтных кодировках в Python 3 больше нет. Поэтому при конвертировании в ту же latin1 получается массив байт, а не строка.

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

Её надо ломать. Иначе либо так и писали бы на коболе, либо все ЯП стали бы такими же уродцами как C++.

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

Нет. Хочешь сломать обратную совместимость - делай новый ЯП/фреймворк, но старый не трогай.

Кто будет переписывать мою кодовую базу с py2 на py3? Гвидо? Или ты возьмёшься?

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

Нет. Хочешь сломать обратную совместимость - делай новый ЯП/фреймворк, но старый не трогай.

его и сделали, назвали python3, вторая версия никуда не делась - пользуйся коли некрофил.

Кто будет переписывать мою кодовую базу? Гвидо?

Гвидо твою кодовую базу сломал? Что ты несешь?

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

str понимает, что от него хотят, и без разницы, строки там, байты или кондебобрики - он выдаёт ровно ту строку, которую я хочу. Но добавляет туда b. Кому нужен вывод без Б? Мне и всем, кто хочет просто и элегантно преобразовать байты в строку. Кому нужен вывод с b? ДА НИКОМУ. Неадекватное поведение. Ни до, ни после, нигде такого поведения нет.

alt-tab-let ★★
()
Ответ на: комментарий от FishHook

его и сделали, назвали python3, вторая версия никуда не делась - пользуйся коли некрофил.

если все нужные либы соберёшь. так были бы биндинги и под python, и под новый язык. а так все убрали поддержку py2 как legacy, и чё ты с голым python-ом делать будешь, как ты будешь собирать какой-нибудь pillow или gevent?

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

если все нужные либы соберёшь. так были бы биндинги и под python, и под новый язык. а так все убрали поддержку py2 как legacy, и чё ты с голым python-ом делать будешь, как ты будешь собирать какой-нибудь pillow или gevent?

и какие претензии то? Это Гвидо лично должен собирать за тебя либы или приказать дистросборщикам не убирать поддержку py2?

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

и какие претензии то?

никаких. python 2 мёртв. помянем. его убили.

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

alt-tab-let ★★
()
Ответ на: комментарий от gruy

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

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

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

alt-tab-let ★★
()
Ответ на: комментарий от FishHook

Ещё раз - инфраструктура, библиотеки, обвязки, биндинги и т.д. Всё ориентировано только на python3. python2 мёртв.

Чистый py2 и у меня есть:

$ python2.7 --version
Python 2.7.18

alt-tab-let ★★
()
Ответ на: комментарий от FishHook

домохозяйки недовольны

боже мой, какая трагедия!

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

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

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

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

дружище, лор на 95% состоит из мамкиных хакеров, которые кроме хелловорда в жизни ничего не программировали. Типа тебя. Понимаешь, чувак, твоё мнение, как Гвидо должен был бы развивать питон, самого Гвидо вообще не интересует. От слова совсем. Он в другом информационном пузыре живёт.

В конце концов, это же опенсорс. Бери и форкай, кто тебе не даёт. А так ты домохозяйка и ты не умеешь? Ну кто на что учился, иди вари борщ.

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

дружище, лор на 95% состоит из мамкиных хакеров, которые кроме хелловорда в жизни ничего не программировали. Типа тебя. Понимаешь, чувак, твоё мнение, как Гвидо должен был бы развивать питон, самого Гвидо вообще не интересует. От слова совсем. Он в другом информационном пузыре живёт.

Я это всё понимаю, поэтому и говорю, что python 2 мёртв. Но был и другой путь развития, чтобы python 2 умирал медленно и печально в руках домохозяек, а не волевым решением «так неправильно, а так правильно».

В конце концов, это же опенсорс. Бери и форкай, кто тебе не даёт. А так ты домохозяйка и ты не умеешь? Ну кто на что учился, иди вари борщ.

Поддерживать 10000 биндингов к разным библиотекам, чтобы были совместимы с python 2? Да, я лучше борщ сварю.

alt-tab-let ★★
()
Ответ на: комментарий от rtxtxtrx

Это может быть неожиданным:

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

может привести к неожиданным результатам:

может привести к неожиданным результатам при работе с этими типами:

Это может быть неожиданным, если вы ожидаете,

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

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

ps:

>>> print(1 < 'a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
flant ★★★★
()
Ответ на: комментарий от alt-tab-let

Поддерживать 10000 биндингов к разным библиотекам,

Блджт! А кто должен это поддерживать? Гвидо? какое он к ним отношение имеет? Ну бредишь же

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

Блджт! А кто должен это поддерживать? Гвидо? какое он к ним отношение имеет? Ну бредишь же

Мне никто ничего не должен. Мне жалко py2, только и всего. Я просто констатирую его смерть, почему мне кто-то что-то должен быть должен?

alt-tab-let ★★
()
Ответ на: комментарий от flant

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

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

Он скопипастил ответ нейросети :)

olegd ★★★
()
Ответ на: комментарий от alt-tab-let

Мне никто ничего не должен. Мне жалко py2, только и всего. Я просто констатирую его смерть, почему мне кто-то что-то должен быть должен?

не знаю, это же ты ноешь «могли бы не убивать» не расшифровывая, что это конкретно значит. Третьему питону уже сколько? пятнадцать лет? Ну пора бы уже прочитать новое издание Лутца и перестать страдать фигнёй

FishHook
()
Ответ на: комментарий от alt-tab-let

Сколько лет Перлу 6? :) В первом(первых?) выпуске lxf в 2005 на русском языке вроде уже о нём писали.

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

FishHook
()
Ответ на: комментарий от alt-tab-let

Он и не меняет содержимое. Это просто pretty print для значений в repl. Не путать с вызовом функции print. Причем оно специально выводит значения в формате, в котором питон без дополнительных может обратно их спарсить.

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

Мне какая разница, он задал вопрос, я ответил. Были возможны разные пути, вышло именно так, имеем то, что имеем. Но за конкретный нюанс обидно.

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

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

Вот кстати неистово двачую. Нам питон зашёл потому что был целый класс задач для которых плюсы были избыточны а баш недостаточно. А уж как Гвидо его хвалил в своей книжке! А вот про то что ему глубоко похер на юзеров и что он сломает обратную совместимость не сказал…

И вот прошло 20 лет, у нас то ниша под питон не изменилась, но py3 выглядит для неё уже избыточным. Меня бы вполне устроил py2 с каким то новыми фишками вроде операции := и юникодных строк без слома совместимости - но увы…

Интересно что завижжат нынешние сторонники py3 когда очередное обновление заставит их перелопачивать всю свою кодовоую базу, бгг.

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

давно стоит комментарий «Агрессивен и упорот»

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

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

Интересно что завижжат нынешние сторонники py3 когда очередное обновление заставит их перелопачивать всю свою кодовоую базу, бгг.

одобрят. если завтра str будет нести несусветную дичь, обоснуют его технически, типа str().nobred().pleaseno().takemefckingstring() это и есть правильное использование языка, а мы все не приспособились к новому миру и должны устареть.

alt-tab-let ★★
()
Ответ на: комментарий от AntonI

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

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

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

ol1mp
()
Ответ на: комментарий от alt-tab-let

Еще раз. В одном скрипте ты пишешь str([1, 2, 3, { ‘vasya’: b’azaza’}, 5]), и записываешь результат например в файл. Во втором скрипте ты суешь содержимое этого файла в eval, и получаешь точную копию той структуры что была, с сохранением типов. А если поменять так, как ты хочешь, то тип изменится на другой.

Playermet
()
Ответ на: комментарий от alt-tab-let

скорее эффект утёнка и в условиях обитания в конкретной байтовой локале подход во втором питоне более прямой

текущее(в python3) разделение на внешнее и внутреенее(всегда utf ) представление строк обременяет не всегда нужной универсальностью

отсюда и боль с encode(ing) decode(ing)

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

Для сериализации в python есть свои функции, которые отлично работают и отлично сохраняют/восстанавливают всю структуру. str превращает всё в строку. у тебя не отняли repr, у тебя не отняли pickle или как его там, не отняли json. можно хотя бы str будет превращать всё в строку?

alt-tab-let ★★
()
Ответ на: комментарий от alt-tab-let

а что Лутц об этом у себя на сайте ?

зы. repr для «пикляния» str для отображения - повсеместный unicode это лучше чем спотыкание об не известную локаль ( в zip файлах до сих пор есть неявная локаль :( )

qulinxao3 ★★
()
Ответ на: комментарий от I-Love-Microsoft

Как это сказалось на многопоточных приложениях?

Совместимость поломается, впрочем как и всегда.

Rodegast ★★★★★
()
Ответ на: комментарий от alt-tab-let

Сериализация это лишь пример. Допустим ты просто для отладки хочешь структуру на экран вывести, посмотреть правильные ли типы лежат. Если вывод двух типов будет одинаковый, то нельзя будет понять, это строка прикидывается массивом байт, или наоборот, или это вообще число (ага, str(123) и str(‘123’) в Python2 совпадают), или все правильно.

Так у тебя тоже ничего не отняли, пиши .decode() и будет тебе строка.

Playermet
()
Последнее исправление: Playermet (всего исправлений: 1)
Ответ на: комментарий от Desmond_Hume
ipython
In[1]%ls
In[2]!bash

python как repl с норм функциями и прочими модулями классами

bash чисто как os.system и или os.popen и или ! и или %

пути расширения возможностей среды

sh(ellы) заточены на файлы и на тексты и сохранение(раньше было так) интерактивной сессии в файл с последующей небольшой(возможно пустой) редактурой

то же самое моженно в ipython

In[x]:print(*In,sep='\n',file=open('sesia.py','a')
In[x+1]:!code -n sesia.py
In[x+2]:!ipython -m sesia -i
In[1]:...

кури программирование на питоне и bash как импортированная библиотека к ниму

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.