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

Ну чо, когда там уже python 4, уже все давным давно перекатились на трешку, а я хочу новой драмы и сгоревших жоп.

anonymous ()

Проверено: Shaman007

чо*ля, ОПЯТЬ?!!

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

Matlab? Пока у меня была лицензия от универа, я про питон и не задумывался. Да и он тогда ещё не так хорош был.

cocucka ★★★★★ ()

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

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

Rodegast ★★★★★ ()

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

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

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

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

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

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

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

https://julialang.org/

Вполне себе альтернатива, но менее популярная. По функционалу и удобству не уступает. Всякие Notebook’s умеет. Либы есть. На крайняк может вызывать питонячьи либы.

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

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

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

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

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

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

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

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

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

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

С уважением,

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

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

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

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

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

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

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

Да мне как-то наплевать что тебе интересно или не интересно, я тут пишу просто потому что мне хочется кнопки на моей клавиатуре нажимать.

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

Нет, даже инструментов за его пределами толком нет.

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

Не, совсем мимо. Интересно, но неюзабельно.

anonymous ()

Почему бы просто не завести синтаксический сахар в C++?

anonymous8 ★★ ()
Ответ на: комментарий от 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 ★★★★★ ()
Ответ на: комментарий от anonymous

Для списков, например, именно + и +=, (…)

И это промах полный. Во всём мире сложением называют коммутативные операции. Конкатенация списков сюда не очень походит.

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

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

Выучи сначала, что такое сложноподчинённые предложения.

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

А еще + используют для обозначения конкатенации. Тоже во всем мире кроме твоего Залупинска. Извиняйся.

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

Мы не просто питонисты, супер-дата-сатанисты…

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

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

В математической нотации это обозначается знаком ∪

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

И как ты его собрался печатать на клавиатуре без танцев с бубном, умник? Поэтому и используют |.

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

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

У меня это предчуствие уже лет 5 как…

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

Для двух двумерных массивов одинаковой размерности + должен поэлементно складывать или пристыковывать массивы друг к другу?

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

Вероятно, потому что объединение словарей и множеств это не их конкатенация. len(a) + len(b) != len(a+b) Кроме того, операция не коммутативна, то есть a | b != b | a

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

Вероятно, потому что объединение словарей и множеств это не их конкатенация.

Ну и что? Сложение чисел тоже не является конкатенацией.

Rodegast ★★★★★ ()

Python – стабильный и распространённый язык.

что в этот раз сломали?

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 ()
Ответ на: комментарий от Rodegast

почему + / += не используется с множествами

A + B — конъюнкция или дизъюнкция? В случае с A | B операция становится очевидной.

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

Чито значит «нет типов»?

d = {1: 5}
print(type(d))

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

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

RazrFalcon я хочу поблагодарить своих родителкй таньку и серёжку.

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