Нашри забони барномасозии Python 3.8

Пас аз якуним соли тараккиёт пешниҳод карда мешавад барориши забони асосии барномасозӣ Python 3.8. Навсозиҳои ислоҳкунанда барои филиали Python 3.8 ба нақша гирифта шудааст дар давоми 18 мох озод карда шавад. Заъифҳои муҳим барои 5 сол то моҳи октябри соли 2024 ислоҳ карда мешаванд. Навсозиҳои ислоҳкунанда барои филиали 3.8 ҳар ду моҳ бароварда мешаванд ва аввалин нашри ислоҳкунандаи Python 3.8.1 дар моҳи декабр ба нақша гирифта шудааст.

Дар байни иловашуда навоварй:

  • таъмин амалиёти таъинот дар дохили ифодаҳои мураккаб. Бо оператори нави “:=” мумкин аст амалиёти таъини арзишҳо дар дохили дигар ифодаҳо анҷом дода шавад, масалан, барои пешгирӣ кардани зангҳои функсияҳои дукарата дар изҳороти шартӣ ва ҳангоми муайян кардани давраҳо:

    агар (n := len(a)) > 10:
    ...

    дар ҳоле ки (блок := f.read(256)) != ":
    ...

  • таъмин синтаксиси нав барои муайян кардани далелҳои функсия. Ҳангоми номбар кардани аргументҳо дар вақти таърифи функсия, шумо ҳоло метавонед "/"-ро барои ҷудо кардани аргументҳо таъин кунед, ки онҳоро танҳо аз рӯи тартибе, ки арзишҳо ҳангоми занги функсия номбар карда мешаванд, аз аргументҳое, ки метавонанд таъин карда шаванд, таъин кардан мумкин аст. бо ҳама гуна тартиб (тағйирёбанда = синтаксиси арзиш) ). Дар паҳлӯи амалӣ, хусусияти нав ба функсияҳо дар Python имкон медиҳад, ки рафтори функсияҳои мавҷуда дар C-ро комилан тақлид кунанд ва инчунин аз пайвастшавӣ ба номҳои мушаххас канорагирӣ кунанд, масалан, агар номи параметр дар оянда тағир дода шавад.

    Парчами "/" парчами қаблан иловашудаи "*"-ро пурра мекунад ва тағирёбандаҳоро ҷудо мекунад, ки барои онҳо танҳо супориш дар шакли "тағирёбанда=арзиш" татбиқ мешавад. Масалан, дар функсияи "def f(a, b, /, c, d, *, e, f):" тағирёбандаҳои "a" ва "b" метавонанд танҳо бо тартиби зикршуда арзишҳо таъин карда шаванд ,
    тағирёбандаҳои "e" ва "f", танҳо тавассути таъини "variable=value" ва тағирёбандаҳои "c" ва "d" бо яке аз роҳҳои зерин:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • Илова карда шуд API нави C
    барои танзим кардани параметрҳои ибтидоии Python, имкон медиҳад, ки назорати пурра аз болои ҳама конфигуратсия ва таъмин намудани воситаҳои пешрафтаи коркарди хатогиҳо. API-и пешниҳодшуда ворид кардани функсияҳои тарҷумони Pythonро ба дигар замимаҳои C осон мекунад;

  • Ба амал бароварда шуд протоколи нави Vectorcall барои дастрасии тезтар ба объектҳои бо забони C навишташуда. Дар CPython 3.8, дастрасӣ ба Vectorcall то ҳол бо истифодаи дохилӣ маҳдуд аст; интиқол ба категорияи API-ҳои дастрас дар CPython 3.9 ба нақша гирифта шудааст;
  • Илова карда шуд зангҳо ба Runtime Audit Hooks, ки барномаҳо ва чаҳорчӯбҳоро дар Python бо дастрасӣ ба маълумоти сатҳи паст дар бораи пешрафти скрипт барои тафтиши амалҳои иҷрошуда таъмин мекунанд (масалан, шумо метавонед воридоти модулҳо, кушодани файлҳо, бо истифода аз пайгирӣ, дастрасӣ ба розеткаҳои шабакавӣ, иҷро кардани код тавассути exec, eval ва run_mod);
  • Дар модул шарбат таъмин карда шудааст дастгирии протоколи Pickle 5, ки барои силсиласозӣ ва ғайрисериализатсияи объектҳо истифода мешавад. Pickle ба шумо имкон медиҳад, ки интиқоли миқдори зиёди маълумотро байни равандҳои Python дар конфигуратсияҳои бисёраслӣ ва бисёр гиреҳ тавассути кам кардани шумораи амалиёти нусхабардории хотира ва татбиқи усулҳои иловагии оптимизатсия ба монанди истифодаи алгоритмҳои фишурдани маълумотҳо оптимизатсия кунед. Варианти панҷуми протокол бо илова кардани режими интиқоли берун аз диапазон, ки дар он маълумот метавонад аз ҷараёни асосии шарбат алоҳида интиқол дода шавад, назаррас аст.
  • Бо нобаёнӣ, версияи чоруми протоколи Pickle фаъол карда мешавад, ки дар муқоиса бо версияи сеюми қаблан пешниҳодшуда, имкон медиҳад, ки иҷрои баландтар ва кам кардани андозаи додаҳои интиқолшаванда;
  • Дар модул чоп кардан Якчанд хусусиятҳои нав ҷорӣ карда мешаванд:
    • Синф TypedDict барои массивҳои ассотсиативӣ, ки дар онҳо иттилооти намуд барои маълумоти бо калидҳо алоқаманд ба таври возеҳ муайян карда мешавад (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Намуди Муаллиф, ки ба шумо имкон медиҳад, ки параметрро маҳдуд кунед ё арзишро ба чанд арзишҳои пешакӣ муайяншуда баргардонед (“Literal['пайвастшуда', 'пайвастшуда']”).
    • Сохтмон"ниҳоӣ", ки имкон медиҳад, ки арзишҳои тағирёбандаҳо, функсияҳо, усулҳо ва синфҳо муайян карда шаванд, ки онҳоро тағир додан ё аз нав таъин кардан ғайриимкон аст ("pi: Final[float] = 3.1415926536").
  • Имконияти таъини кэш барои файлҳои тартибдодашуда бо байткод, ки дар дарахти алоҳидаи FS захира карда шудааст ва аз каталогҳо бо код ҷудо карда шудааст, илова карда шудааст. Роҳи захира кардани файлҳо бо байткод тавассути тағирёбанда муқаррар карда мешавад PYTHONPYCACHEPREFIX ё варианти "-X pycache_prefix";
  • Ба амал бароварда шуд қобилияти эҷоди дебагҳои Python, ки ABI-и шабеҳи нашрро истифода мебаранд, ки ба шумо имкон медиҳад васеъшавии бо забони SI навишташуда, ки барои релизҳои устувор тартиб дода шудаанд, дар сохтани дебагҳо бор кунед;
  • сатрҳои f (литералҳои форматшуда бо пешванди 'f') барои оператори = дастгирӣ мекунанд (масалан, "f'{expr=}'"), ки ба шумо имкон медиҳад ифодаро ба матн барои ислоҳи осонтар табдил диҳед. Барои намуна:

    ››› корбар = 'eric_idle'
    ››› узви_аз соли = сана (1975, 7, 31)
    ››› f'{user=} {member_sice=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Ифода "давом додан» иҷозат дода мешавад, ки дар дохили блок истифода шаванд дар охир;
  • Модули нав илова карда шуд multiprocessing.shared_memory, имкон додани истифодаи сегментҳои хотираи муштарак дар конфигуратсияҳои бисёрҷанба;
  • Дар платформаи Windows, татбиқи асинсио барои истифодаи синф кӯчонида шудааст ProactorEventLoop;
  • Иҷрои дастури LOAD_GLOBAL аз ҳисоби истифодаи механизми кэшкунии коди объект тақрибан 40% зиёд шуд.

Манбаъ: opennet.ru

Илова Эзоҳ