Python 3.9.0

Выйшаў новы стабільны рэліз папулярнай мовы праграмавання Python.

Python – высокаўзроўневая мова праграмавання агульнага прызначэння, арыентаваная на павышэнне прадукцыйнасці распрацоўніка і чытальнасці кода. Асноўныя рысы - дынамічная тыпізацыя, аўтаматычнае кіраванне памяццю, поўная інтраспекцыя, механізм апрацоўкі выключэнняў, падтрымка шматструменных вылічэнняў, высокаўзроўневыя структуры дадзеных.

Python - стабільная і распаўсюджаная мова. Ён выкарыстоўваецца ў многіх праектах і ў розных якасцях: як асноўная мова праграмавання або для стварэння пашырэнняў і інтэграцыі прыкладанняў. Асноўныя галіны прымянення: вэб-распрацоўка, машыннае навучанне і аналіз даных, аўтаматызацыя і сістэмнае адміністраванне. У сапраўдны момант Python займае трэцяе месца ў рэйтынгу. ЦІОБЕ.

Асноўныя змены:

Новы высокапрадукцыйны сінтаксічны аналізатар на базе граматык 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.

Крыніца: linux.org.ru

Дадаць каментар