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

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

Еще раз. У меня есть код. Не сторонний, а мой. Я его написал. Код хранится в зашифрованном файле. Моя программа читает файл, расшифровывает его и екзекьютит прочитанный код. Где нарушение секьюрности?

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

Да, оно заработает ожидаемым образом.

Базара нет, заработает, согласен. Но вряд ли это то поведение, которого ожидают пользователи, ни один метод словаря не реализует такое поведение

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

Еще раз. У меня есть код.

Еще раз - если ты его исполняешь для себя, пиши как душе угодно. В случае той же ынтерпрайзщины, твой exec зарубит penetration team и вежливо попросит переимплементить. В противном случае, не получишь апрув на продакшин. Причин может быть много - от хитрого взлома снаружи, до придурка ждуна, который после тебя будет что-либо дописывать и накосячит с секюрностью. Уговоры в стиле «мамой клянусь все секурно» не прокатывают. Потому как за некоторые утечки данных можно получить 10 лет американской отсидки.

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

Да не пори ты чушь. Какой к х""ям взлом снаружи? То есть некто получил доступ к моему коду, чтобы подменить аргумент в вызове exec? Правда что ли? А без вызова exec он не может инжектировать вредоносный алгоритм имея доступ к моим исходникам?

будет что-либо дописывать и накосячит с секюрностью

Это как вообще? Объясни на приведенном выше примере.

Такую х"""ню нести может только товарищь не понимающий смысла темы от слова совсем. Любой импорт в питоне - это неявный вызов exec. Запуск интерпретатора, это вызов exec.

твой exec зарубит penetration team

Рииииали?? penetration team ревьюит весь код на предмет использования «запрещенных» ключевых слов языка? Это в какой параллельной вселенной?

Вы когда говорите, такое чувство, что вы бредите. Перестань нести околесицу.

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

Рииииали?? penetration team ревьюит весь код на предмет использования «запрещенных» ключевых слов языка? Это в какой параллельной вселенной?

Ну вот сразу видно, что в реальности ты никогда с серьезной работой не сталкивался. В данном случае на репу натравливают анализатор и «писуну» exec’ов приходит PDF в котором будут все случаи с exec помечены как High Priority, обязательные к устранению. Вычитывать вручную никто не будет. Любая возможность инъекции кода считается дырой в безопасности по умолчанию.

Любой импорт в питоне - это неявный вызов exec.

В импорт можно подставить произвольные данные? Нет. Вот и вся «небольшая» разница.

Запуск интерпретатора, это вызов exec.

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

Речь в целом не идет о том, как ты заимплементил работу c exec. А о том, что от него избавляются. Чтобы было доступнее, даже вот такой код в html считается несекюрным (хотя фигли в нем опасного) при аудите:

<a onclick='do_something()'>
Linfan ★★★★★ ()
Ответ на: комментарий от Linfan

Чтобы было доступнее, даже вот такой код в html считается несекюрным (хотя фигли в нем опасного) при аудите:

Не совсем так, считается небезопасной сама идея наличия кода в HTML, потому что его можно потенципльно туда заинжектить. Поэтому в обязательном порядке ставят Content-Security-Policy так что никакой <a onclick='do_something()'> не выполнится, заинжекчен он или нет.

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

Все верно, если смотреть в целом. Content-Security-Policy без всяких unsafe-inline и прочих исключений.

Linfan ★★★★★ ()

А можно под кат убирать ниочемку, а краткий перечень фич поднимать?

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

Коммунити версия пичарма весьма прокачана и бесплатна к юзанию

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

anonymous ()

У самого главного «Нинужно» появилась новая нинужная версия.

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

Я написал, что для задач «быстро и дёшево» не подходят языки с мощными системами типов

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

Живой пример - 1С. Монополия, целиком и полностью написанная на динамическом ЯП 1с скрипт. Ошибка на ошибке. Каждое обновление что-то ломает и добавляет еще ошибок. И так до бесконечности. А это потеря миллиардов бабла и миллионы часов бессмысленного труда бухов и айтишников

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

В питон-програмах низкого качества виноват непосредственно Гвидо и его креатив cpython. Им обоим по**й что выполнять. Главное чтобы примерно напоминало код

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

Да вот в Си можно случайно разыменовать нулевой указатель, давай на этом основании сделаем вывод (который делает анон), что весь софт написаный на Си - гавно

Делаю. Си — говно. В норм языках давно есть ADT, которые позволяют давать нулевым указателям отдельный неразыменовываемый тип.

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

Какому ассоциативному массиву? А такие обращения не оптимизируются чтоли?

Берешь питоний модуль dis, скармливаешь ему исходники, читаешь байткод, озаряешься. Или генерируешь код Cython-ом и читаешь сишные исходники. Диспетчеризация команд интерпретатором по байткоду сама по себе никогда не была проблемой. Проблемой была невозможность инлайна функций, скаляризации векторов (а.к.а сложных объектов). Питон вынужден в любом варианте выполнения при считывании атрибута, в том числе даже при банальном вызове функции из модуля, запрашивать из dict-а объекта атрибут с этим именем, что есть запрос из хэш таблицы а.к.а. ассоциативный массив. И всё исполнение в итоге превращается в такие вот запросы ассоциативных массивов.

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

Писать в каждой функции if isinstance(arg, int): do(arg) else: raise Exception(«Bad argument type») как-то запарно

А тем временем примерно так я делаю в своем коде на Си, только проверяю не совсем тип, а скорее целостность структуры данных.

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

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

Но почему-то у RPython, в который транслирует питон PyPy, прекрасно получается выводить типы.

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

я должен открывать каждый проект и прощелкать все файлы, чтобы линтер их чекнул?

Проверка линтером обычно делается сразу на весь проект в CI/CD на каждый коммит в репу. Пока ты пишешь код, пичарм на лету чекает тот файл, в котором ты работаешь. Делает проверку перед коммитом, чтобы не гнать явный мусор в репу. Вполне достаточно, чтобы не делать грубые ошибки.

В нормальном языке говно поймает сам язык

Это как? Чо, прям в блокноте не отходя от кассы божественным провидением? )))

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

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

Почему ты решил что операторы должны заменять методы? Пользователи будут ожидать то что написано в документации. Причём большинство операторов лево-ассоциативны по этому от нового оператора «|=» будут ожидать того же.

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

В питон-програмах низкого качества виноват непосредственно Гвидо и его креатив cpython. Им обоим по**й что выполнять. Главное чтобы примерно напоминало код

А тебе не приходило в голову, что в проедании говна не виноват тот, кто это говно высрал?

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

А тебе не приходило в голову, что в проедании говна не виноват тот, кто это говно высрал?

Ну что за фиксация на говне? Как дети :)

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

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

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

Это вообще наиболее общая проблема всего IT.

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

Да ладно. Закопай он его в лесу я бы слова не сказал. Но ведь он холил его и лелеял. Долгие годы был евангелистом своего говна. Верные апостолы его разносили говно его по дистрибутивам и институтам

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

До этого уже было такое:

>>> dict({'a': 1, 'b': 2}.items() | {'b': 2, 'c': 3}.items())
{'b': 2, 'a': 1, 'c': 3}
>>> dict({'a': 1, 'b': 2}.items() & {'b': 2, 'c': 3}.items())
{'b': 2}

и если ты хочешь заменить | на +, то & на что предлагаешь заменять?

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

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

Студент, который строил графички на матлабе. Выходит из универа и пытается вкатиться в компьютер саенс. Но резко о***вает от сложности нормальных ЯП. Но потом находит на помойке питон. Простой донельзя. Сделанный специально для школьников и дегенератов. С горем пополам осиливает туториал. Успешно делает аналитику на своей первой халтурке. Считает что познал айти. И навеки становится фанатом динамического петушения

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

Милые девчушки, почуяв запах бабла в отрасли вкатываются куда? Правильно. в язык для школоты. Потому что компы их мало интересуют, если по честноку. Самые отчаянные пытаются в реакт, но их всё меньше

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

Вся эта п***обратия вытесняет другие языки с ниши анализа данных и ИИ. Юные подаваны смотрят на вакансии и приходят к умозаключению, что питон это супер-пупер штука для роботов и будущего!

Так что не надо мне про «это просто инструмент». Это динамическое днище. Пукалка для наколеночных скриптов и обучающая игрушка для дошколят. Волею случая ставшая популярной в важных сферах нашей жизни. Считаемая дурным тоном у програмистов со стажем

Поэтому жизненно важно напоминать говноедам, что они едят говно. Оъбяснять почему это питон говно. И предлагать болезным взамен нормальные инструменты

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

1995 год, Netscape: Эй, Брэндон, сделай нам язычок как джава но упрости максимально, чтобы даже даун мог освоить

2020 год, frontend-сообщество: РЯЯЯЯ! В мире миллиарды с устройств с джаваскриптом! Мы ненавидим этот говно js! О, а давайте писать на других языках и потом перегонять это в js? Назовем это транспайлер!

2020 год: Питон простой, понятный. идеально подходит для машин лёрнинг и дата саенс

20 лет спустя: РЯЯЯ!

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

Юные подаваны смотрят на вакансии и приходят к умозаключению, что питон это супер-пупер штука для роботов и будущего!

Поправочка: не будущего, а настоящего. Во всём остальном пост полон зависти и сожаления о прожитах годах.

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

сожаления о прожитах годах

Сожаления о необходимости транспайлить

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

Волею случая ставшая популярной в важных сферах нашей жизни.

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

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

Поправочка: не будущего, а настоящего. Во всём остальном пост полон зависти и сожаления о прожитах годах.

100% Чтобы снимать сливки с хайпа по питону, на нем кодить надо было начинать хотя бы 5-7 лет назад. А ждуном быть хреново на любом ЯП.

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

Долгие годы был евангелистом своего говна. Верные апостолы его разносили говно его по дистрибутивам и институтам

Блин, да он предлагал его для замены баша, и не более того. И таки как замена башу он вполне неплох. Но ИНДУСтрия натянула сову на глобус. Ну скажи же, на баше писать веб-сайт — это полнейший бред. А на питонобаше таки смогли написать — значит это лучше инструмент.

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

Кстати, выкати в студию замену для питона в датасайнсе

Что угодно лчше говна. Swift, Rust, Java, Kotlin, C#, D, go, Ocaml, Haskel, Vala

На самом деле не важно какой из адекватных статически типизируемых. При повышенном внимании он со временем эволюционирует в достойный инструмент. Но питон не язык, а говно, в силу его динамической его природы. ЯП и говно не имеют ничего общего. Поэтому говно никогда не станет ЯП (см. историю развития js)

anonymous ()

Печать из шаблонов

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

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

Что угодно лчше говна. Swift, Rust, Java, Kotlin, C#, D, go, Ocaml, Haskel, Vala

Какой шустрый анон ))) А теперь ответь сам себе - почему не юзают или юзают вкупе с Питоном? Надеюсь, хоть чуть-чуть прояснится в твоем сумеречном сознании и поймешь простейшие азы?

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

Блин, да он предлагал его для замены баша, и не более того.

Пруфов для такого сакрального знания, так понимаю не будет?

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

Но ИНДУСтрия натянула сову на глобус

И этой совой была джава - самое популярное у индусов :)

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

Блин, да он предлагал его для замены баша

Скорее перла. Этот выпускник факультета математики-информатики решил идти по пути говна, берущего начало от sed, awk и прочей ереси, но добавив туда модные объекты. При этом в те времена времени уже появлялись адекватные С++, Java, Object Pascal. Но хипарь выбрал говноедствовать

Но ИНДУСтрия натянула сову на глобус

В вебе уже нет: уже переходят на адекват. А в ИИ еще нет: еще есть шанс что говно заменят

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

адекватная java, с++, object pascal, ахаха ты такой смешной.

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

почему не юзают или юзают вкупе с Питоном

Потомучто ученым и школьникам так удобнее. А когда пойдет жаришка (умный город, умные авто и прочий хайлоад), выяснится что питон уже в каждой щели и начнут **рить транспайлеры. Проходили ведь уже

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

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

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

В вебе уже нет: уже переходят на адекват.

угу, первое место - Meteor (js+node.js), второе - Flask (догадайтесь на чем).

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

Потомучто ученым и школьникам так удобнее

Так, случай запущенный, понимание нулевое :) Приоткрою завесу тайны - разработка на питоне гораздо быстрее идет чем на перечисленных известных и узко-известных ЯП. Всего лишь навсего. Причем на круг вместе с отладкой. В нормальных странах, человеческий ресурс стоит дороже, чем железо. Поэтому время разработки - это самое ценное.

начнут **рить транспайлеры

Ну-ка, расскажи, для чего юзается транспиляция джаваскрипта?

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

разработка на питоне гораздо быстрее

Сказки будешь школьникам рассказывать

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

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

И дело даже не только в скорости. БОльшая беда в том, что системы будут говно. Огромные, разнородные системы на динамическом ЯП. Это ад и погибель доя индустрии

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

В нормальных странах

Это те страны которые втащили цивилизацию, а в месте с ней и IT, в дерьмо?

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

и если ты хочешь заменить | на +, то & на что предлагаешь заменять?

С чего ты взял что я предлагаю его на что то заменить?

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

будешь школьникам рассказывать

Ну вот школоту и просвящаю, а шо делать? Кому щаз легко? ;)

В остальном, смирись мальчик - кто платит деньги, тот и танцует. У остальных скромная роль анонимусов.

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

БОльшая беда в том, что системы будут говно.

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

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

В остальном, смирись мальчик - кто платит деньги, тот и танцует

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

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

Взрослый, успешный человек, а всё о деньгах.

Увы, на них все держится, даже FSF и Linux. И важны даже не сами деньги, а то с какой скоростью они приходуются/расходуются.

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

Вот за это не стоит переживать - портирование на py3 идет активно, насколько позволяет «кровавый ынтерпрайз» :)

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