Издање програмског језика Питхон 3.9

После годину дана развоја представљени значајно издање програмског језика питхон КСНУМКС. Питхон 3.9 је био прво издање после прелаз пројекат на нови циклус припрема и подршка издањима. Нова главна издања ће се сада генерисати једном годишње, а исправна ажурирања ће се објављивати свака два месеца. Свака значајна грана ће бити подржана годину и по, након чега ће бити развијене још три и по године да би поправила рањивости.

Радови на новој грани сада почињу пет месеци пре изласка следеће гране, тј. што се поклопило са издавањем Питхон-а 3.9 почео алфа тестирање гране Питхон 3.10. Грана Питхон 3.10 биће у алфа издању седам месеци, током којих ће бити додане нове функције и исправљене грешке. Након тога, бета верзије ће бити тестиране три месеца, током којих ће додавање нових функција бити забрањено и сва пажња ће бити посвећена исправљању грешака. Последња два месеца пре пуштања, грана ће бити у фази кандидата за ослобађање, у којој ће се извршити коначна стабилизација.

Међу додао је иновације у Питхон-у 3.9:

  • У речницима дефинисаним коришћењем уграђене класе дицт, појавио се подршка за операторе спајања "|" и "|=" ажурирања, која допуњују методе {**д1, **д2} и дицт.упдате које су претходно предложене за спајање речника.

    >>> к = {"кеи1": "валуе1 фром к", "кеи2": "валуе2 фром к"}
    >>> и = {"кеи2": "валуе2 фром и", "кеи3": "валуе3 фром и"}

    >>> к | и
    {'кеи1': 'валуе1 фром к', 'кеи2': 'валуе2 фром и', 'кеи3': 'валуе3 фром и'}

    >>> и | Икс
    {'кеи2': 'валуе2 фром к', 'кеи3': 'валуе3 фром и', 'кеи1': 'валуе1 фром к'}

  • Уграђена колекција типова укључује листу, дицт и тупле, који се могу користити као основни типови без увоза из модула за куцање. Оне. уместо куцања.Листа, куцања.Дикт и куцања.Тупле сада можете да наведете
    само наведите, дицт и тупле:

    деф греет_алл(намена: листа[стр]) -> Ништа:
    за име у именима:
    принт("Здраво", име)

  • Су дати флексибилни алати за означавање функција и променљивих. За причвршћивање напомена, нови Аннотирани тип је додат у модул за куцање, проширујући постојеће типове додатним метаподацима који се могу користити за статичку анализу или за оптимизацију времена извршавања. За приступ метаподацима из кода, параметар инцлуде_ектрас је додат методи типинг.гет_типе_хинтс().

    charType = Annotated[int, ctype(«char»)] UnsignedShort = Annotated[int, struct2.ctype(‘H’)]

  • Ублажена граматички захтеви за декоратере – сваки израз погодан за употребу у блоковима иф и вхиле сада се може користити као декоратер. Промена је значајно побољшала читљивост ПиКт5 кода и поједноставила одржавање овог модула:

    Било је:
    button_0 = buttons[0] @button_0.clicked.connect

    Сада можете написати:
    @буттонс[0].цлицкед.цоннецт

  • У стандардну библиотеку додато модул зонеинфо, који укључује информације из ИАНА базе података о временским зонама.

    >>> из зонеинфо импорт ЗонеИнфо
    >>> из датетиме импорт датетиме, тимеделта
    >>> # Летње време
    >>> дт = датетиме(2020, 10, 31, 12, тзинфо=ЗонеИнфо("Америка/Лос_Ангелес"))
    >>> принт(дт)
    2020-10-31 12:00:00-07:00

    >>> дт.тзнаме()
    'ПДТ'

    >>> # Стандардно време
    >>> дт += тимеделта(дана=7)
    >>> принт(дт)
    2020-11-07 12:00:00-08:00

    >>> принт(дт.тзнаме())
    ПСТ

  • Додат грапхлиб модул, у којем имплементиран подршка за тополошко сортирање графова.
  • Предложено нове методе за уклањање префикса и завршетака редова - стр.ремовепрефик(префик) и стр.ремовесуффик(суффик). Методе су додате стр, бајтовима, бајт низовима и цоллецтионс.УсерСтринг објектима.

    >>> с = "ФооБар"
    >>> с.ремовепрефик("Фоо")
    'бар'

  • Укључено нови парсер пег (Парсинг Екпрессион Граммар), који је заменио парсер ЛЛ(1). Употреба новог парсера је омогућила да се отарасите неких од „хакова“ који су коришћени да се заобиђу ограничења у ЛЛ(1) и значајно смањила трошкове рада за одржавање парсера. У погледу перформанси, нови парсер је приближно на истом нивоу као претходни, али је знатно испред њега у погледу флексибилности, што вам омогућава да се осећате слободније када дизајнирате нове језичке карактеристике. Стари код парсера је за сада задржан и може се вратити помоћу ознаке „-Кс олдпарсер“ или променљиве окружења „ПИТХОНОЛДПАРСЕР=1“, али ће бити уклоњен у издању 3.10.
  • Под условом могућност Ц метода проширења да приступе стању модула у којем су дефинисани коришћењем директне дереференције показивача уместо тражења стања модула помоћу функције ПиСтате_ФиндМодуле. Промена вам омогућава да повећате перформансе Ц модула тако што ћете смањити или потпуно елиминисати трошкове провере стања модула. За повезивање модула са класом, предложена је Ц-функција ПиТипе_ФромМодулеАндСпец(), да би се добио модул и његово стање, предложене су Ц-функције ПиТипе_ГетМодуле() и ПиТипе_ГетМодулеСтате() и да би се обезбедио метод са приступом класи у коме је дефинисана, предложена је Ц-функција ПиЦМетход и ознака МЕТХ_МЕТХОД.
  • Ђубретар испоручена од закључавања колекција које садрже реанимиране објекте који остају екстерно доступни након покретања финализатора.
  • Додати метод ос.пидфд_опен, што омогућава да се подсистем Линук кернела „пидфд“ користи за решавање ситуације поновног коришћења ПИД-а (пидфд је повезан са одређеним процесом и не мења се, док се ПИД може повезати са другим процесом након што се тренутни процес повезан са тим ПИД-ом оконча ).
  • Подршка за Уницоде спецификацију је ажурирана на верзију 13.0.0.
  • Елиминисано цурење меморије приликом поновног покретања Питхон интерпретера у истом процесу.
  • Оптимизоване су перформансе уграђених типова ранге, тупле, сет, фрозенсет, лист и дицт. имплементиран кроз употребу протокола пречице Вецторцалл за бржи приступ објектима написаним у језику Ц.
  • Из иницијализација у неколико фаза.
  • Стандардни библиотечки модули аудиооп, аст, грп, _хасхлиб, пвд, _посиксубпроцесс, рандом, селецт, струцт, термиос и злиб су конвертовани да користе ограничено стабилан АБИ, који решава проблем оперативности склопова модула проширења за различите верзије Питхон-а (приликом ажурирања верзије, нема потребе за реконструисањем модула проширења, а модули компајлирани за 3.9 ће моћи да раде у грани 3.10).
  • Асинцио модул је застарео подршку за параметар реусе_аддресс због потенцијалних безбедносних проблема (коришћење СО_РЕУСЕАДДР за УДП на Линук-у омогућава различитим процесима да прикључе прислушне утичнице на УДП порт).
  • Додате су нове оптимизације, на пример, побољшане перформансе руковалаца сигналима у вишенитним апликацијама, повећана брзина модула подпроцеса у ФрееБСД окружењу и брже додељивање привремених променљивих (додељивање променљиве у изразу „за и у [екпр ]” је сада једнако ефикасан као израз „и = екпр” "). Генерално, већина тестова схов смањење перформанси у поређењу са граном 3.8 (убрзање се примећује само у тестовима врите_лоцал и врите_декуе):

    Питхон верзија 3.4 3.5 3.6 3.7 3.8 3.9
    ————— — — — — — —

    Приступ за читање променљивих и атрибута:
    реад_лоцал 7.1 7.1 5.4 5.1 3.9 4.0
    реад_нонлоцал 7.1 8.1 5.8 5.4 4.4 4.8
    реад_глобал 15.5 19.0 14.3 13.6 7.6 7.7
    реад_буилтин 21.1 21.6 18.5 19.0 7.5 7.7
    реад_цлассвар_фром_цласс 25.6 26.5 20.7 19.5 18.4 18.6
    реад_цлассвар_фром_инстанце 22.8 23.5 18.8 17.1 16.4 20.1
    реад_инстанцевар 32.4 33.1 28.0 26.3 25.4 27.7
    реад_инстанцевар_слотс 27.8 31.3 20.8 20.8 20.2 24.5
    реад_намедтупле 73.8 57.5 ​​45.0 46.8 18.4 23.2
    реад_боундметход 37.6 37.9 29.6 26.9 27.7 45.9

    Приступ за писање променљивих и атрибута:
    врите_лоцал 8.7 9.3 5.5 5.3 4.3 4.2
    врите_нонлоцал 10.5 11.1 5.6 5.5 4.7 4.9
    врите_глобал 19.7 21.2 18.0 18.0 15.8 17.2
    врите_цлассвар 92.9 96.0 104.6 102.1 39.2 43.2
    врите_инстанцевар 44.6 45.8 40.0 38.9 35.5 40.7
    врите_инстанцевар_слотс 35.6 36.1 27.3 26.6 25.7 27.7

    Приступ за читање структуре података:
    реад_лист 24.2 24.5 20.8 20.8 19.0 21.1
    реад_декуе 24.7 25.5 20.2 20.6 19.8 21.6
    реад_дицт 24.3 25.7 22.3 23.0 21.0 22.5
    реад_стрдицт 22.6 24.3 19.5 21.2 18.9 21.6

    Приступ за писање структуре података:
    врите_лист 27.1 28.5 22.5 21.6 20.0 21.6
    врите_декуе 28.7 30.1 22.7 21.8 23.5 23.2
    врите_дицт 31.4 33.3 29.3 29.2 24.7 27.8
    врите_стрдицт 28.4 29.9 27.5 25.2 23.1 29.8

    Операције стека (или реда):
    лист_аппенд_поп 93.4 112.7 75.4 74.2 50.8 53.9
    декуе_аппенд_поп 43.5 57.0 49.4 49.2 42.5 45.5
    декуе_аппенд_поплефт 43.7 57.3 49.7 49.7 42.8 45.5

    Временска петља:
    лооп_оверхеад 0.5 0.6 0.4 0.3 0.3 0.3

  • Уклоњено многе функције и методе Питхон 2.7 које су претходно застареле и резултирале су ДепрецатионВарнинг у претходном издању, укључујући методу унесцапе() у хтмл.парсер.ХТМЛПарсер,
    тостринг() и фромстринг() у арраи.арраи, исАливе() у тхреадинг.Тхреад, гетцхилдрен() и гетитератор() у ЕлементТрее, сис.гетцхецкинтервал(), сис.сетцхецкинтервал(), асинцио.Таск.цуррент_таск(), асинцио.Таск.алл_таскс(), басе64.енцодестринг() и басе64.децодестринг().

Извор: опеннет.ру

Додај коментар