PÄc gada attÄ«stÄ«bas uzrÄdÄ«ts nozÄ«mÄ«gs programmÄÅ”anas valodas izlaidums Python 3.9. Python 3.9 bija pirmais laidiens pÄc tam pÄreja projekts tÄlÄk jauns cikls izlaidumu sagatavoÅ”ana un atbalsts. Jauni lielÄkie laidieni tagad tiks Ä£enerÄti reizi gadÄ, un koriÄ£ÄjoÅ”ie atjauninÄjumi tiks izlaisti ik pÄc diviem mÄneÅ”iem. Katra nozÄ«mÄ«ga nozare tiks atbalstÄ«ta pusotru gadu, pÄc tam vÄl trÄ«sarpus gadi tai tiks izstrÄdÄti ievainojamÄ«bu novÄrÅ”anai.
Darbs pie jaunas filiÄles tagad sÄkas piecus mÄneÅ”us pirms nÄkamÄs filiÄles izlaiÅ”anas, t.i. kas sakrÄ«t ar Python 3.9 izlaiÅ”anu sÄkÄs Python 3.10 filiÄles alfa testÄÅ”ana. Python 3.10 atzars alfa versijÄ bÅ«s septiÅus mÄneÅ”us, kuru laikÄ tiks pievienotas jaunas funkcijas un izlabotas kļūdas. PÄc tam beta versijas tiks testÄtas trÄ«s mÄneÅ”us, kuru laikÄ jaunu funkciju pievienoÅ”ana bÅ«s aizliegta un visa uzmanÄ«ba tiks pievÄrsta kļūdu laboÅ”anai. PÄdÄjos divus mÄneÅ”us pirms izlaiÅ”anas filiÄle bÅ«s izlaiduma kandidÄta stadijÄ, kurÄ tiks veikta galÄ«gÄ stabilizÄcija.
VÄrdnÄ«cÄs, kas definÄtas, izmantojot iebÅ«vÄto diktÄÅ”anas klasi, parÄdÄ«jÄs atbalsts apvienoÅ”anas operatoriem "|" un "|=" atjauninÄjumi, kas papildina vÄrdnÄ«cu apvienoÅ”anai iepriekÅ” piedÄvÄtÄs metodes {**d1, **d2} un dict.update.
>>> x = {"key1": "vÄrtÄ«ba1 no x", "key2": "vÄrtÄ«ba2 no x"}
>>> y = {"key2": "vÄrtÄ«ba2 no y", "key3": "vÄrtÄ«ba3 no y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
IebÅ«vÄtajÄ tipu kolekcijÄ ir saraksts, diktÄts un kortežs, ko var izmantot kÄ pamattipus, neimportÄjot no maŔīnrakstÄ«Å”anas moduļa. Tie. rakstÄ«Å”anas vietÄ.Saraksts, rakstÄ«Å”ana.Dikts un rakstÄ«Å”ana.Tuple tagad varat norÄdÄ«t
tikai saraksts, dikts un kortežs:
Tiek nodroÅ”inÄti elastÄ«gi rÄ«ki funkciju un mainÄ«go anotÄÅ”anai. Lai pievienotu anotÄcijas, rakstÄ«Å”anas modulim ir pievienots jauns anotÄcijas veids, paplaÅ”inot esoÅ”os veidus ar papildu metadatiem, ko var izmantot statiskai analÄ«zei vai izpildlaika optimizÄcijai. Lai piekļūtu metadatiem no koda, metodei typing.get_type_hints() ir pievienots parametrs include_extras.
TonizÄts GramatiskÄs prasÄ«bas dekoratoriem - jebkurÅ” izteiciens, kas piemÄrots lietoÅ”anai, ja un kamÄr blokus tagad var izmantot kÄ dekoratoru. IzmaiÅas ievÄrojami uzlaboja PyQt5 koda lasÄmÄ«bu un vienkÄrÅ”oja Ŕī moduļa apkopi:
Tagad jūs varat rakstīt:
@buttons[0].clicked.connect
Uz standarta bibliotÄku piebilda modulis zoninfo, kas ietver informÄciju no IANA laika joslu datu bÄzes.
>>> no zoneinfo importÄt ZoneInfo
>>> no datetime importa datetime, timedelta
>>> # Vasaras laiks
>>> dt = datums un laiks(2020, 10, 31, 12, tzinfo=ZoneInfo("Amerika/Losandžela"))
>>> drukÄt (dt)
2020-10-31 12:00:00-07:00
>>> dt.tzname()
"PDT"
>>> # Standarta laiks
>>> dt += timedelta(dienas=7)
>>> drukÄt (dt)
2020-11-07 12:00:00-08:00
>>> drukÄt(dt.tzname())
PST
Pievienots graphlib modulis, kurÄ Ä«stenota atbalsts grafiku topoloÄ£iskai ŔķiroÅ”anai.
IerosinÄts jaunas metodes prefiksu un rindu galotÅu noÅemÅ”anai - str.removeprefix(prefix) un str.removesuffix(sufikss). Str, bytes, bytearray un collections.UserString objektiem ir pievienotas metodes.
>>> s = "FooBar"
>>> s.removeprefix("Foo")
'BÄrs'
IesaistÄ«ts jauns parsÄtÄjs PEG (Parsing Expression Grammar), kas aizstÄja parsÄtÄju LL(1). JaunÄ parsÄtÄja izmantoÅ”ana ļÄva atbrÄ«voties no dažiem āuzlauzumiemā, kas tika izmantoti, lai apietu LL(1) ierobežojumus, un ievÄrojami samazinÄja parsÄtÄja uzturÄÅ”anas darbaspÄka izmaksas. VeiktspÄjas ziÅÄ jaunais parsÄtÄjs ir aptuveni tÄdÄ paÅ”Ä lÄ«menÄ« kÄ iepriekÅ”Äjais, taÄu ievÄrojami apsteidz to elastÄ«bas ziÅÄ, kas ļauj justies brÄ«vÄk, izstrÄdÄjot jaunas valodas funkcijas. PagaidÄm tiek saglabÄts vecais parsÄtÄja kods, un to var atgriezt, izmantojot karogu "-X oldparser" vai vides mainÄ«go "PYTHONOLDPARSER=1", taÄu tas tiks noÅemts 3.10. laidumÄ.
Ar nosacÄ«jumu C paplaÅ”inÄjuma metožu iespÄja piekļūt to moduļu stÄvoklim, kuros tie ir definÄti, izmantojot tieÅ”u rÄdÄ«tÄja atsauci, nevis meklÄt moduļa stÄvokli, izmantojot funkciju PyState_FindModule. IzmaiÅas ļauj palielinÄt C moduļu veiktspÄju, samazinot vai pilnÄ«bÄ novÄrÅ”ot moduļa stÄvokļa pÄrbaudes pieskaitÄmÄs izmaksas. Lai saistÄ«tu moduli ar klasi, tiek piedÄvÄta C funkcija PyType_FromModuleAndSpec(), lai iegÅ«tu moduli un tÄ stÄvokli, tiek piedÄvÄtas C funkcijas PyType_GetModule() un PyType_GetModuleState() un nodroÅ”inÄtu metodi ar piekļuvi klasei. kurÄ tas ir definÄts, tiek piedÄvÄta C-funkcija PyCMethod un METH_METHOD karodziÅÅ”.
Atkritumu savÄcÄjs piegÄdÄts no kolekciju bloÄ·ÄÅ”anas, kas satur reanimÄtus objektus, kuri pÄc pabeigtÄja palaiÅ”anas paliek ÄrÄji pieejami.
Pievienota metode os.pidfd_open, kas ļauj izmantot Linux kodola apakÅ”sistÄmu "pidfd", lai apstrÄdÄtu PID atkÄrtotas izmantoÅ”anas situÄciju (pidfd ir saistÄ«ts ar konkrÄtu procesu un nemainÄs, savukÄrt PID var tikt saistÄ«ts ar citu procesu pÄc tam, kad beidzas paÅ”reizÄjais process, kas saistÄ«ts ar Å”o PID ).
Unikoda specifikÄcijas atbalsts ir atjauninÄts uz versiju 13.0.0.
Ir optimizÄta iebÅ«vÄto tipu diapazona, korektora, kopas, iesaldÄtÄs kopas, saraksta un diktatÅ«ras veiktspÄja. Ä«stenoti izmantojot Vectorcall saÄ«snes protokolu, lai ÄtrÄk piekļūtu objektiem, kas rakstÄ«ti C valodÄ.
Moduļi _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operators, resurss, laiks un _weakref tiek ielÄdÄti no inicializÄcija vairÄkos posmos.
Standarta bibliotÄkas moduļi audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios un zlib ir pÄrveidoti, lai izmantotu ierobežotu. stabils ABI, kas atrisina paplaÅ”inÄjumu moduļu komplektu darbspÄjas problÄmu dažÄdÄm Python versijÄm (atjauninot versiju, nav nepiecieÅ”ams pÄrbÅ«vÄt paplaÅ”inÄjuma moduļus, un 3.9 filiÄlÄ varÄs strÄdÄt moduļi, kas sastÄdÄ«ti 3.10).
Ir pievienotas jaunas optimizÄcijas, piemÄram, uzlabota signÄlu apstrÄdÄtÄju veiktspÄja daudzpavedienu lietojumprogrammÄs, palielinÄts apakÅ”procesa moduļa Ätrums FreeBSD vidÄ un ÄtrÄka pagaidu mainÄ«go pieŔķirÅ”ana (pieŔķirot mainÄ«go izteiksmÄ āfor y in [expr ]ā tagad ir tikpat efektÄ«va kÄ izteiciens āy = exprā). KopumÄ lielÄkÄ daļa testu parÄdÄ«t veiktspÄjas samazinÄÅ”anÄs salÄ«dzinÄjumÄ ar 3.8. nozari (paÄtrinÄjums tiek novÄrots tikai testos write_local un write_deque):
Laika cilpa:
cilpa_overhead 0.5 0.6 0.4 0.3 0.3 0.3
NoÅemts daudzas Python 2.7 funkcijas un metodes, kas iepriekÅ” bija novecojuÅ”as un kuru rezultÄtÄ tika parÄdÄ«ts brÄ«dinÄjums par novecoÅ”anu iepriekÅ”ÄjÄ laidienÄ, tostarp unescape() metode failÄ html.parser.HTMLParser,
tostring() un fromstring() masÄ«vÄ.masÄ«vÄ, isAlive() vÄ«tÅoÅ”anÄ. Thread, getchildren() un getiterators() programmÄ ElementTree, sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() un base64.decodestring().