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)

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

Либо обратная совместимость есть, либо ее нет.

akho
()

Лагранж обогнали. До гнома не дотянем. Ибо гном велик. Наверное, ту тему не читал.

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

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

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

так-то мутабельные типы могут работать, если реализуют equals/hashcode контракт, просто ответственность переходит к пользователю, что приведет объект в старое состояние, если ему понадобится

когда с этим разбирался, у меня сложилось впечатление, что на set это ограничение зачем-то искусственно наложили намеренно поломав hash, хотя фиг его знает.

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

ну, что-то всё же есть:

>>> {frozenset([1, 2, 3]): True}[frozenset([3, 1, 2])]
True
asdpm
()
Ответ на: комментарий от alt-tab-let

в языках типа java с .что-то().гдето().тама().ещё().двакилометра()

мне думается ее изначально делали с расчетом на всякие интеллисенсы, что в целом-то правильно

фишка python в том, что я его не учил. вообще. я просто думал

да.

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

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

мне думается ее изначально делали с расчетом на всякие интеллисенсы, что в целом-то правильно

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

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

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

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

я пишу в mcedit последние лет 20

Вот и первопричина. Без дебаггера вообще невозможно разрабатывать код. Поставь VS Code и настрой Настройка VS Code для работы с Python. Я чтоли зря написал статью, вызвавшую резкую жопоболь у электроненавистников, ожидавших что-то типа настройки emacs/vim?

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

Вот и первопричина. Без дебаггера вообще невозможно разрабатывать код.

Я не люблю всё, что отвлекает моё внимание. Я всегда сижу в fm, я вижу все свои файлы, и у меня есть кнопка F4, мне это удобно. Если я буду использовать ide, я тупо забуду что хотел сделать, пока открывается ide. :)

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

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

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

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

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

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

Без дебаггера вообще невозможно разрабатывать код.

А мужики то и не знают…

На самом деле Вы сейчас пытаетесь спроецировать свой личный опыт (Ваши личные особенности + ограниченный класс решаемых Вами задач) на весьмир. Не надо так делать.

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

Без дебаггера вообще невозможно разрабатывать код

сильный постулат :(
-- search: „Никогда программы не содержат так мало ошибок, как при отсутствии каких-либо средств отладки.“
ps. Отладчик(пошаговый)важен(полезен в соответствующих мерах) при освоении новой семантики переводя компилируемые тексты в «построчно» интерпретируемые синхронизируя модель у обучающегося с моделью исполнения с отладчиком(которая по возможности тождественна с «диким» исполнением)

инварианты (пред и пост хурма)нес па?

Поставь VS Code и настрой Настройка VS Code для работы с Python.

code крутейший из общераспространённых текстовых редакторов. угораю с @something |code -n pathOfplace - @х
**кста какая стратегия увешивания (непривязанных к hotkeys)команд на горячие клавиши?

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

@something | code - @ рулит и педалит

впрочем как и
@something | vim -

ps. сколько панелей открыто? на какую часть экрана? панели одной высоты? :)

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

(мимокрокодил)«мы иное ВЫ»

как известно(:) sic?) dataclasses али как их более полный предок attrs ( c cattrs и/или а теперь совершенно этоже)

для HFP есть же всяческие специальные

как не печально?радостно?закономерно? общий медиум ща json с подвывертами

:( https://stackoverflow.com/questions/10065419/python-the-best-way-to-serialize...

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 4)
Ответ на: комментарий от alt-tab-let

Вот что доказывает факт того, что запись этих букв в ASCII и latin1 кодировках выдает одни и те же номера символов без явного разделения на массивы байтов и строки? Ты слышал про расширенную таблицу ASCII? Что может случиться, если во втором питоне при (де)кодировании не знать заранее применяемой кодировки?

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

А какое по умолчанию значение у параметра encoding, если его не указывать? Какого типа должен быть первый аргумент функции str (не «<class ‘str’>»)?

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

в пистоне (особенно особенно третьем) вообще можно голые байты записывать:

255 .to_bytes(4)
b'\x00\x00\x00\xff'

Для массивов говна типа весов и пр хрени - самое то, компактнее некуда. Но байтовые строки не нужны, это «сложна»

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

Сварщик я ненастоящий

Тогда отойди от сварочного аппарата, а то еще травмируешь кого-нибудь. Задолбала эта двуличная позиция некоторых товарищей. Как только товарища чуть-чуть ткнуть носом в непрофессионализм, он принимает позу Кирпича из «Места встречи…» и такой «да ты чо, начальник, я же не профессионал, хе-хе». Но блин, зато громче всех усирается в спорах, имеет мнение, ибо «а как же, я же юзер, я же ЦА!». Ну это, как если я сейчас припрусь в лабораторию к Антонлу, найду пять ошибок в синрофазотроне, а на вопрос, а как должно быть то, начну отмазываться, да я ж не настоящий физик, что вы пристали.

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

Необходимо сохранять относительно сложные питоновские структуры данных содержащие экземпляры пользовательских классов.

объекты домена никуда сохранять не надо. Создайте соответсвующие структуры, задача которых уметь сериализоваться в какое-либо представление (в JSON например) и десериализоваться назад в объекты. Тут поможет, например, pydantic

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

pydantic

Это тебе не FastAPI, где этот pydantic нужен для валидации входящих данных + из него генерируется SwaggerUI. Такие се советы

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

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

AntonI ★★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx
set(print(v,int('0x01020304',16).to_bytes(4,byteorder=v)) for v in [__import__('sys').byteorder]+'little big pdp11'.split())

аааа не все форматы аааа 2>3

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

pydantic нужен для валидации входящих данных

нет, pydantic нужен для сериализации-десериализации ДТОшек

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

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

Я лично использовал бы для сериализации CBOR или что-то аналогичное, если данных много и нужна скорость, и обычный JSON для чего-то более мелкого. Альтернатива — внезапно, можно писать данные в SQL-базу, особенно если доставать их потом придётся не все вместе, а по частям. Но можно погрязнуть в ынтерпрайзе)

Если нужно хранить какие-то данные на диске с быстрым доступом по ключу, то может подойти что-то DBM-подобное, например Tokyo/Kyoto Cabinet, а в значение записывать, например, JSON или CBOR с нужными данными. Но у меня не было пока практического кейса, где мне удалось бы этим попользоваться.

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

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

что то сложное в него положить это надо сильно постараться

Да не особо. Читаемость может пострадать (или совсем потеряться), но принципиальных проблем нет. Как и XML, эта штука может вытерпеть всё, даже поля с base64 :)

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

Без дебаггера вообще невозможно разрабатывать код

Очень даже можно. Кнут, например, даже не запускал свои программы, а только доказывал корректность) А полная неспособность сделать что-то сложное без метода проб и ошибок — признак недостаточной квалификации.

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

С SQL проблема в том, что данные нельзя редактировать средствами ФС. Т.е. я скажем могу часть записей снести/перенести просто из командной строки - с SQL так не выйдет.

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

Конечно все это делается - но pickle это умеет из коробки;-)

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

С SQL проблема в том, что данные нельзя редактировать средствами ФС. Т.е. я скажем могу часть записей снести/перенести просто из командной строки - с SQL так не выйдет.

Ну с SQL так тоже можно — есть консольный sqlite, и для более «серьёзных» баз есть консольные клиенты. И даже графические, где можно выделить строчки и снести.

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

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

Можно делать в классах методы для (де)сериализации. Можно разделять в архитектуре данные и классы с бизнес-логикой. Всё не так страшно.

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

ээээ для far manager есть плагин например например для бродяжничества по реестру

таки для far manager есть(всмысле теоретически нет препятствий) браузится по таблицам и их строкам на уровне панелек

по сути нужОн контролер который соотносит действия в дереве где таблица это «файл» а кортеж это строка в «файле» с SQL командами эмитируемыми по мере действий пользователя

:)

эх plan9 годный план

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

Не-не-не ребята. Есть пачка расчетов, каждый расчет это директория с кучей толстых файлов и к ним файлик с метаинформацией. Эти расчеты могут (и будут) переносится средствами ФС, перегоняться по сети, архивироваться и тд и тп. Следить за тем что бы при этом SQL не гикнулась - вот уж чего не надо того не надо.

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

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

Здесь это не особо нужно (пожалуй что и совсем ненужно).

pickle же бинарный, насколько я понимаю.

старый пикл текстовый, но не особо читабельный. Это минус.

Можно делать в классах методы для (де)сериализации.

Можно конечно, я не спорю. Но в pickle это все уже из коробки, вот в чем штука…

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