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

Скачал, довольно шустро работает и объём небольшой.

Подскажи, пожалуйста, sk1, полностю написана на python?

И как ты экзешник под винду сделал?

Какая графическая библиотека для отрисовки окошек используется?

Заранее спасибо.

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

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

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

https://www.python.org/doc/essays/foreword/

«I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers»

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

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

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

То есть для конъюнкции ты хочешь заменить оператор, а для дизъюнкции оставить как есть? И когда в следующий раз в питон добавят пересечение словарей, то будет так {'a': 1, 'b':2} & {'b': 2, 'c': 3}, а для объединения будет с плюсом? это же бред

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

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

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

Во, нашел

https://www.youtube.com/watch?v=lKXe3HUG2l4

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

«I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers»

Походу вы не понимаете разницы между shell и interpreter. shell это частный случай интерпретатора. Питон, ABC, бейсик, php и многие другие это интерпретаторы, но ни разу не shell. ABC так ваще не имел доступа к файловой системе - ну прям сферический шелл в вакууме :)

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

Подскажи, пожалуйста, sk1, полностю написана на python?

Нет, основа на С

И как ты экзешник под винду сделал?

py2exe - для py2 это был единственно вменяемый вариант

Какая графическая библиотека для отрисовки окошек используется?

wxWidgets. На линуксе она gtk, на винде родные виндовые контролы, на маке Cocoa.

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

Походу вы не понимаете разницы между shell и interpreter. shell это частный случай интерпретатора. Питон, ABC, бейсик, php и многие другие это интерпретаторы, но ни разу не shell. ABC так ваще не имел доступа к файловой системе - ну прям сферический шелл в вакууме

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

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

Там денег просят за рабочий вариант, а не один раз форму набросать.

Не совсем так. Генерация PDF документов опенсурсная. А вот канва для загрузки и изменения готовых pdf-файлов - платная. Необязательно готовить темплейт в pdf. Можно весь документ описать в питоне программно. Можно использовать разметку, которую предлагает ReportLab. Можно даже самостоятельно подгрузить pdf, используя pypdf и вывести на печать через cairo (тогда и ReportLab не потребуется). Короче говоря, платную канву можно объехать на «кривой козе».

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

решение ИНДУСтрия натянула на глобус, начав писать на «этом» веб сайты

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

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

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

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

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

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

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

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

Очевидно, этот маразматичный дедок манипулирует неопровергаемыми тезисами. Почему он остановился на цифре 40? Почему не с изобретения колеса? Да и никто в здравом уме не будет и не собирается разгребать «весь этот сырбор», а будут латать пока возможно, а как станет невозможно — выбросят и напишут новое, на питоне.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

да и я особо ничего, просто зашел потрепаться

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

Это

Очередное убогое поделие…

Махмундо.

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

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

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

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

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

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

Тред полон специалистов по языкам программирования. Складывается ощущение, что каждый второй пишет свои компилятор для своего языка.

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

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

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

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

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

Конечно пишем. Выбирайте:

  1. 2 языка (минимум) с ключевым словами на кириллице.
  2. Воображаемый язык программирования мета-данных от Владимира.
  3. Метапрог.
Kogrom ()
Ответ на: комментарий от Kogrom

Ты скучный. А как насчет писать императивный код на смеси YAML и jinja-шаблонов?

Цикл for:

script:
  flash_light:
    mode: restart
    sequence:
      - service: light.turn_on
        data:
          entity_id: "light.{{ light }}"
      - repeat:
          count: "{{ count|int * 2 - 1 }}"
          sequence:
            - delay: 2
            - service: light.toggle
              data:
                entity_id: "light.{{ light }}"
  flash_hallway_light:
    sequence:
      - service: script.flash_light
        data:
          light: hallway
          count: 3
anonymous ()
Ответ на: комментарий от screamager

То есть для конъюнкции ты хочешь заменить оператор, а для дизъюнкции оставить как есть?

Господин клоун, я же тебя послал на изучение матчасти. Пока её не выучишь ничего суда не пиши!

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

Впечатляет! Я в восторге!

Зашёл на гитхаб по ссылке. Там 34 контрибьютора с нерусскими фамилиями. Ничто не указывает на то, что это сделал анонимус с ЛОРа.

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

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

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

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