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 ()

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

В место + и += будем использовать больше операторов!

Rodegast ★★★★★ ()

машинное обучение и анализ данных, автоматизация и системное администрирование

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

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

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

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

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

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

Есть ли альтернатива в области Data Science, сравнимая по эффективности с Python?

Новый проект решил сделать на python + pandas + matplotlib.

До этого был на R и интеграция через python.

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

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

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

Ну если ты такой умный, то объясни мне убогому почему + / += не используется с множествами?

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

Потому-что так не принято в математической нотации.

С уважением,

мимо другой анон,

ваш покорный слуга,

Денчик Владимир Второй,

покоритель питонов,

чморитель родегастов,

и просто хороший человек.

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

https://julialang.org/

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

Всякие Notebook’s умеет.

F# тоже поддерживает.

https://fsharp.org/guides/data-science/

https://raw.githubusercontent.com/fsprojects/IfSharp/master/docs/files/img/errors-1.png

https://raw.githubusercontent.com/fsprojects/IfSharp/master/docs/files/img/integratedNuget.png

https://raw.githubusercontent.com/fsprojects/IfSharp/master/docs/files/img/intellisense-2.png

А мне до сих пор неясны применения Notebook, есть же IDE…

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

+=1

в прошлой версии они завезли := вместо того чтобы переиспользовать =, а теперь вот это

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

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

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

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

Вот так исторически сложилось, что для сложения и конкатенации используется один и тот же оператор. Могли, конечно, заюзать какую-нибудь экзотику как в php, например, но не стали. Лично я не вижу проблемы в том, что словари и множества имеют свой набор операторов отличный от списков и кортежей. Более того, автор пепа специально этот момент поясняет https://www.python.org/dev/peps/pep-0584/

The new operators will have the same relationship to the dict.update method as the list concatenate (+) and extend (+=) operators have to list.extend. Note that this is somewhat different from the relationship that |/|= have with set.update; the authors have determined that allowing the in-place operator to accept a wider range of types (as list does) is a more useful design, and that restricting the types of the binary operator’s operands (again, as list does) will help avoid silent errors caused by complicated implicit type casting on both sides.

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

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

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

FishHook ()