LINUX.ORG.RU

Python 3.9.0

 ,


2

4

Вышел новый стабильный релиз популярного языка программирования Python.

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

Python – стабильный и распространённый язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. Основные области применения: веб-разработка, машинное обучение и анализ данных, автоматизация и системное администрирование. В настоящий момент Python занимает третье место в рейтинге TIOBE.

Основные изменения:

Новый высокопроизводительный синтаксический анализатор на базе грамматик PEG.

В новой версии текущий парсер Python на основе грамматик LL(1)(КС-грамматика) заменён на новый высокопроизводительный и стабильный синтаксический анализатор на базе PEG (РВ-грамматика). Анализаторы для языков, представленных КС-грамматиками, такие как LR-анализаторы, требуют особого шага лексического анализа, который разбивает входные данные в соответствии с пробелами, пунктуацией и так далее. Это необходимо, так как эти анализаторы используют предварительный анализ для обработки некоторых КС-грамматик в линейное время. РВ-грамматики не требуют отдельного шага лексического анализа, а правила для него могут быть заложены вместе с другими правилами грамматики.

Новые операторы и функции

Во встроенный класс dict добавлены два новых оператора, | для слияния словарей и |= для обновления.

В класс str добавлены две новые функции: str.removeprefix(префикс) и str.removesuffix(суффикс).

Аннотация типа для встроенных коллекций

В этом релизе включена поддержка синтаксиса обощённых типов во всех стандартных коллекциях, доступных в настоящее время.

def read_blog_tags(tags: list[str]) -> None:
    for tag in tags:
        print("Tag Name", tag)

Другие изменения

  • PEP 573 Доступ к состоянию модуля с помощью методов расширения C

  • PEP 593 Гибкие функции и переменные аннотации

  • PEP 602 Python переходит на ежегодные стабильные релизы

  • PEP 614 Смягчающие грамматические ограничения на декораторы

  • PEP 615 Поддержка базы данных IANA по часовым поясам в стандартной библиотеке

  • BPO 38379 сборка мусора не блокируется на восстановленных объектах

  • BPO 38692 os.pidfd_open, для управления процессами без гонок и сигналов;

  • BPO 39926 поддержка Unicode обновлена до версии 13.0.0

  • BPO 1635741, при многократной инициализации Python в одном и том же процессе, больше не происходит утечка памяти

  • Коллекции Python (range, tuple, set, frozenset, list, dict) ускорены с помощью векторного вызова PEP 590

  • Некоторые модули Python (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, ресурс, time, _weakref) теперь используют многофазную инициализацию, как определено в PEP 489

  • Ряд стандартных модулей библиотек (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) теперь используют стабильный ABI, определенный PEP 384.

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

★★★★☆

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

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

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

Ну да конечно. Именно поэтому в Python принесли type hints и Mypy. А ты, судя по всему, пишешь лишь какие-то простенькие скрипты, поэтому на баги с типизацией не нарываешься.

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

Сообщаю, хинты вносят еще и для оптимизаций (на счет питона не знаю). И нет, не совсем простенькие. Баги с типизацией: в основном из-за дырявой архитектуры. Но если архитектура говно, у тебя все и так пойдет по *****. А большие проблемы в больших проектах - в основном из-за архитектуры. Но теперь скажи мне, кто быстрее подкорректирует эту архитектуру.

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

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

Еще очень модно не любить свое время. Как тут послушаешь некоторых, так такое ощущение, что у них целая вечность на то что бы дебагать сегфолты (и кто-то еще там говорит про «отодвигание багов в рантайм», ну-ну). Путь эволюции софта такой - напроектировать заранее все нельзя, слишком сложно, приходиться создавать рабочие модели. А потом уже их переписывать если надо. И почему-то одни макаки начинают хейтить других макак, но при этом все находятся в одной круговой канализации в которую срут сверху, а они поддерживают ее круговорот на разных глубинах. Просто кто-то в этом круговороте делает оптимизированные турбины в узких местах, а кто-то проталкивает окромные кучи дерьма на катамаранах с автовеслами. В дерьме все - но как тут не хейтить все вокруг если ты окружен дерьмом.

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

Сообщаю, хинты вносят еще и для оптимизаций (на счет питона не знаю).

Для оптимизаций под виртуальной машиной давно придумали JIT. А Mypy и прочии анализаторы кода ты почему-то пропустил. А ведь их не от хорошей жизни с динамической типизацией придумали. Не удивлюсь, если со временем Python начнёт поддерживать ещё и статическую типизацию.

Баги с типизацией: в основном из-за дырявой архитектуры.

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

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

А как без статики избавиться от проверки типов в рантайме? Вот хинты и анализаторы уже подвезли, так зачем же проверять типы в рантайме и проседать в производительности? Давным давно умные люди изобрели обобщённое программирование со статической типизацией, а эти динамитчики всё равно лезут со своим quick and dirty.

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

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

Кстати, что можешь сказать с идеей если переписать код с питона на c-api? Насколько изменится производительность? А-ля:

print((1, 2, 'three'))
#include <python3.7/Python.h>

int main() {
	Py_Initialize();
	PyObject *t = PyTuple_New(3);
	PyTuple_SetItem(t, 0, PyLong_FromLong(1L));
	PyTuple_SetItem(t, 1, PyLong_FromLong(2L));
	PyTuple_SetItem(t, 2, PyUnicode_FromString("three"));
	PyObject_Print(t, stdout, Py_PRINT_RAW);
	PyObject_Print(PyUnicode_FromString("\n"), stdout, Py_PRINT_RAW);
	return 0;
}
anonymous
()
Ответ на: комментарий от bbk123

Ожидаю небольшое ускорение. Потом поэкспериментирую…

Если будет маленькое ускорение, или вообще, не будет, значит придется писать более сложный компилятор, чем в c-api.

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

Скорее всего ускорения вообще не будет, так как ты дёргаешь те же питоновские объекты и методы.

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

Не удивлюсь, если со временем Python начнёт поддерживать ещё и статическую типизацию

Врятли. Скорее корпорация добра (MS), вздохнув по своей горькой долюшки спасителя говноязыков, в очередной раз создаст типизированную версию говна (TypepPy, TypeTuby), который транспайлится в динамоговно. Попытки уже [url=https://github.com/microsoft/pyright]делает[/url]. Впрочем, в этот раз запрос сообщества не велик.

..и это не может не радовать. Отбитое питон-комьюнити презирает типы. Я как-то создавал на разных ресурсах вопросы с фрагментами кода, сожержащими тайпхинты. Везде были ответы в духе «ЗОЙЧЕМ ТИПЫ УДОЛИ ТИПЫ». Так что сдается мне, что питон доживает последние деньки и вскоре отправится вслед за руби, и пёрлом и tcl.

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

Врятли. Скорее корпорация добра (MS), вздохнув по своей горькой долюшки спасителя говноязыков, в очередной раз создаст типизированную версию говна (TypepPy, TypeTuby), который транспайлится в динамоговно.

Mypy именно так и появился.

Так что сдается мне, что питон доживает последние деньки и вскоре отправится вслед за руби, и пёрлом и tcl.

Это врядли. Слишком много на нём уже написано и уже где используется. Они могут просто добавить strict режим для тех, кому нужно. А по-умолчанию Python продолжит быть динамическим.

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

Так что сдается мне, что питон доживает последние деньки и вскоре отправится вслед за руби, и пёрлом и tcl.

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

питон-комьюнити презирает типы

И правильно. Зачем из питона делать C# (C++, Java и т.д.), когда эти языки уже есть? Питон плохо подходит для команды. Уж если хочется задействовать его в серьёзной разработке, то можно было бы вначале делать прототип на питоне без лишней писанины одним разработчиком, а затем командой переписывать на язык со статической типизацией, если будет необходимость. Вместо этого зачем-то уродуют питон.

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

В этом виноваты разработчики, которые:

  • знают python

  • не знают c#/java/whatever

  • идут в галеру писать тырпрайзы командой.

Поэтому будет так. И да, типы рулят.

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

Это врядли. Слишком много на нём уже написано и уже где используется

Возражение, актуальное для Cи и жс. Для Си потому что можно забиндить в другие ЯП. Для жс исторически, потомучто он уже на всех девайсах. А в нише ИИ (пока) выбор инструментов ничем не ограничен. В устройства питон врят-ли будут внедрять. А на серверах можно разгуляться любыми языками. И посредственная динамическая пукалка с размером рантайма как у джавы вызовет лишь недоумение у контейнероблядков. Тем более, что креативы на питоне не переиспользовать за пределами питона

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

Давным давно умные люди изобрели обобщённое программирование со статической типизацией, а эти динамитчики всё равно лезут со своим quick and dirty.

А толку, если удобные статические ЯП маргинальны и бесперспективны. Ну вот есть на замену руби и питону crystal и nim. Это хорошие языки, но бесполезные, потому что там остаешься один на один с компилятором, а больше ничего нет. И более зрелые языки как D, ocaml находятся в примерно таком же состоянии. Там пустыня. А немаргинальная статика это жава-говны. Спасибо, но лучше уж питонами обмазываться.

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

c#, kotlin, даже f# вполне сойдут. Да и swift.

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

https://cython.readthedocs.io/en/latest/src/quickstart/cythonize.html

Cython is a Python compiler. This means that it can compile normal Python code without changes (with a few obvious exceptions of some as-yet unsupported language features, see Cython limitations). However, for performance critical code, it is often helpful to add static type declarations, as they will allow Cython to step out of the dynamic nature of the Python code and generate simpler and faster C code - sometimes faster by orders of magnitude.

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

Питон плохо подходит для команды.

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

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

Это успешный фанат питона из арабских эмиратов. Сочетание похлеще 40-летнего кодера на Си, запертого в теле юной девушки

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

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

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

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

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

Глупости. Простая разница в синтаксисе способна дать ощутимую разницу разве если говорить про языки типа бреинфака.

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

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

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

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

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

Глупости. Простая разница в синтаксисе способна дать ощутимую разницу разве если говорить про языки типа бреинфака.

Твое мнение. как теоретика безусловно ценно, но практика показывает, что оно глупое. Особенно про «придумали для скриптиков» :) Походу, у тебя жабодеформация мозга. Профессиональное, йопта. Экономия идет и за счет синтаксиса и за счет динамики. И крупные проекты вполне успешно пишутся и функционируют с должным сопровождением. Если бы мнение оналитега-анона из РФ было бы истинным, крупные корпы не выдавливали бы жабку из прода, заменяя питоном. Уж поверь, там бабло умеют считать в отличии от.

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

Кул. Бесплатный профессиональный анализ используемых технологий на рынке разработки программного обеспечения от, вне всякого сомнения ведущего специалиста Гугла с дипломом МИТ.

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

Страшно, подумать чего там ебаном.ит творится.

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

вне всякого сомнения ведущего специалиста Гугла

С конторой таки промахнулся - более топовый энтерпрайз. А так в целом норм ;)

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