Lëshimi i gjuhës së programimit Python 3.10

Pas një viti zhvillimi, është prezentuar një version i rëndësishëm i gjuhës së programimit Python 3.10. Kjo degë do të mbështetet për një vit e gjysmë, pas së cilës do të formohen marrëveshje për të përmirësuar dobësitë për tre vite e gjysmë.

Në të njëjtën kohë, ka filluar testimi alfa i degës Python 3.11 (në përputhje me planin e ri të zhvillimit, puna për degën e re fillon pesë muaj para publikimit të degës së mëparshme dhe arrin në fazën alfa në momentin e publikimit të ardhshëm). Degë Python 3.11 do të qëndrojë në fazën e lëshimeve alfa gjatë shtatë muajve, kohë në të cilën do të shtohen mundësi të reja dhe do të korrigjohen gabimet. Pas kësaj, do të zhvillohet testimi i versioneve beta për tre muaj, gjatë të cilëve do të ndalohet shtimi i mundësive të reja dhe do të fokusohet vetëm në rregullimin e gabimeve. Dy muajt e fundit para publikimit, degë do të qëndrojë në fazën e kandidatëve për lëshim, në të cilën do të kryhet stabilizimi përfundimtar.

Ndër risitë e shtuar në Python 3.10:

  • JanĂ« realizuar operatorĂ«t «match» dhe «case» pĂ«r pĂ«rputhjen me modele, tĂ« cilat pĂ«rmirĂ«sojnĂ« lexueshmĂ«rinĂ« e kodit, thjeshtĂ«zojnĂ« pĂ«rputhjen e objekteve tĂ« rastit nĂ« Python dhe rrisin besueshmĂ«rinĂ« e kodit falĂ« mundĂ«sisĂ« pĂ«r kontroll tĂ« avancuar tĂ« tipeve. Zbatimi Ă«shtĂ« nĂ« shumĂ« aspekte i ngjashĂ«m me operatorin «match», tĂ« ofruar nĂ« gjuhĂ«t Scala, Rust dhe F#, i cili kryen krahasimin e rezultatit tĂ« ekzekutimit tĂ« shprehjes sĂ« dhĂ«nĂ« me njĂ« listĂ« modelet tĂ« renditura nĂ« blloqet bazuar nĂ« operatorin «case».

    def http_error(status): match status: case 400: return «Kërkesë e keqe» case 401|403|404: return «Nuk lejohet» case 418: return «Unë jam një tenxhere çaji» case _: return «Dick tjetër»

    ËshtĂ« e mundur tĂ« zbrazen objekte, tuple, lista dhe sekuenca tĂ« rastit pĂ«r tĂ« lidhur variablat nĂ« bazĂ« tĂ« vlerave ekzistuese. Lejohet pĂ«rcaktimi i modele tĂ« thelluara, pĂ«rdorimi i kushteve tĂ« mĂ«tejshme «if» nĂ« model, pĂ«rdorimi i maskave («[x, y, *rest]»), mapimi i çelĂ«save/vlerave (p.sh., {«bandwidth»: b, «latency»: l} pĂ«r nxjerrjen e vlerave «bandwidth» dhe «latency» nga njĂ« fjalor), nxjerrja e nĂ«nmodeleve (operatori «:=»), pĂ«rdorimi i konstantave me emĂ«r nĂ« model. NĂ« klasa, Ă«shtĂ« e mundur tĂ« konfigurohet sjellja gjatĂ« pĂ«rputhjes pĂ«rmes metodĂ«s «__match__()».

    from dataclasses import dataclass @dataclass class Point: x: int y: int def whereis(point): match point: case Point(0, 0): print(«Origjina») case Point(0, y): print(f»Y={y}») case Point(x, 0): print(f»X={x}») case Point(): print(«Diku tjetër») case _: print(«Nuk është një pikë») match point: case Point(x, y) if x == y: print(f»Y=X në {x}») case Point(x, y): print(f»Nuk është në diagonale») RED, GREEN, BLUE = 0, 1, 2 match color: case RED: print(«Shoh të kuqe!») case GREEN: print(«Bima është e gjelbër») case BLUE: print(«Po ndjej blu :(«)

  • ËshtĂ« ofruar mundĂ«sia e pĂ«rdorimit tĂ« kllapave nĂ« operatorin with pĂ«r tĂ« ndarĂ« nĂ« disa rreshta pĂ«rcaktimin e koleksioneve tĂ« menaxherĂ«ve tĂ« kontekstit. PĂ«rfshirĂ« Ă«shtĂ« e lejuar tĂ« lĂ«shohet njĂ« presje pas menaxherit tĂ« fundit nĂ« grup: with ( CtxManager1() as example1, CtxManager2() as example2, CtxManager3() as example3, ): 

  • ËshtĂ« pĂ«rmirĂ«suar informimi nĂ« lidhje me vendndodhjen e gabimeve nĂ« kod, tĂ« lidhura me kllapat e mbyllura dhe citatet nĂ« literaturĂ«n string. PĂ«r shembull, nĂ« rastin e njĂ« kllape tĂ« hapur, nĂ« vend tĂ« informimit pĂ«r njĂ« gabim sintaksor nĂ« strukturĂ«n e ardhshme, treguesi tani ndriçon kllapĂ«n e hapur dhe informon pĂ«r mungesĂ«n e bllokut tĂ« mbyllur. File «example.py», line 1 expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, ^ SyntaxError: ‘{‘ nuk u mbyll kurrĂ«

    Janë shtuar mesazhe të tjera të specializuara për gabimet sintaksore: mungesa e simbolit «:» përpara bllokut dhe në fjalorët, mos veçimi i tuple-ve me kllapa, mungesa e presjes në lista, përcaktimi i bllokut «try» pa «except» dhe «finally», përdorimi i «=» në vend të «==» në krahasime, përcaktimi i *-shprehjeve në f-strings. Për më tepër, është siguruar ndriçimi i gjithë shprehjes problematike, jo vetëm fillimi i saj, dhe informimi më të dukshëm mbi kontekstin e gabimeve të lidhura me përjashtimin e keq.

    NĂ« gabimet e shkaktuara nga shkrimi i gabuar tĂ« emrave tĂ« atributeve dhe variablave nĂ« funksion, Ă«shtĂ« ofruar njĂ« rekomandim me emrin e saktĂ«. >>> collections.namedtoplo Traceback (most recent call last): File «<stdin>», line 1, in <module> AttributeError: module ‘collections’ nuk ka atribut ‘namedtoplo’. A e kishe parasysh: namedtuple?

  • PĂ«r mjetet e diagnostikimit dhe profileve Ă«shtĂ« siguruar tregimi i numrave tĂ« saktĂ« tĂ« rreshtave tĂ« kodit tĂ« ekzekutuar nĂ« ngjarjet e gjurmimit.
  • Shtuar cilĂ«simi sys.flags.warn_default_encoding pĂ«r tĂ« shfaqur njĂ« paralajmĂ«rim pĂ«r gabime tĂ« mundshme nĂ« trajtimin e skedarĂ«ve nĂ« TextIOWrapper dhe open() nĂ« kodimin UTF-8 pa treguar nĂ« mĂ«nyrĂ« tĂ« qartĂ« opsionin 'encoding="utf-8"' (pĂ«rdoret kodimi ASCII si parazgjedhje). Gjithashtu, nĂ« versionin e ri ofrohet mundĂ«sia pĂ«r tĂ« caktuar vlerĂ«n 'encoding="locale"' pĂ«r tĂ« vendosur kodimin nĂ« bazĂ« tĂ« lokalizimit aktual.
  • NĂ« modulĂ«n typing, e cila ofron mjete pĂ«r pĂ«rcaktimin e anotacioneve tĂ« tipeve, Ă«shtĂ« shtuar operatori i ri, qĂ« lejon pĂ«rdorimin e sintaksĂ«s 'X | Y' pĂ«r tĂ« zgjedhur njĂ« nga tipelet (tipi X ose tipi Y). def square(number: int | float) -> int | float: return number ** 2 ekvivalente me konstruktin qĂ« Ă«shtĂ« mbĂ«shtetur mĂ« parĂ«: def square(number: Union[int, float]) -> Union[int, float]: return number ** 2
  • NĂ« modulĂ«n typing Ă«shtĂ« shtuar operatori Concatenate dhe variabla ParamSpec, tĂ« cilat lejojnĂ« kalimin e informacionit shtesĂ« pĂ«r kontrollin static tĂ« tipeve gjatĂ« pĂ«rdorimit tĂ« Callable. NĂ« modulĂ«n typing janĂ« shtuar gjithashtu vlera speciale TypeGuard pĂ«r anotimin e funksioneve qĂ« mbrojnĂ« tipet dhe TypeAlias pĂ«r pĂ«rcaktimin e qartĂ« tĂ« pseudonimeve tĂ« tipeve. StrCache: TypeAlias = ‘Cache[str]’ # njĂ« pseudonim tipi
  • NĂ« funksionin zip() Ă«shtĂ« implementuar njĂ« flamur opsional 'strict', i cili, kur Ă«shtĂ« treguar, kryen kontrollin e gjatĂ«si tĂ« njĂ«jtĂ« tĂ« argumenteve tĂ« listuara. >>> list(zip((‘a’, ‘b’, ‘c’), (1, 2, 3), strict=True)) [(‘a’, 1), (‘b’, 2), (‘c’, 3)] >>> list(zip(range(3), [‘fee’, ‘fi’, ‘fo’, ‘fum’], strict=True)) Traceback (most recent call last): 
 ValueError: zip() argument 2 is longer than argument 1
  • JanĂ« propozuar funksione tĂ« reja tĂ« ndĂ«rthurura aiter() dhe anext() me implementimin e analogĂ«ve asinkronĂ« tĂ« funksioneve iter() dhe next().
  • PĂ«rmirĂ«suar me 30-40% performanca e konstruktorĂ«ve str(), bytes() dhe bytearray() kur punohet me objekte tĂ« vogla.
  • Numri i operacioneve tĂ« importit nĂ« modulĂ«n runpy Ă«shtĂ« reduktuar. Komanda 'python3 -m emri_modulit' tani ekzekutohet mĂ« shpejt me njĂ« mesatare 1.4 pĂ«r shkak tĂ« reduktimit tĂ« moduleve tĂ« importuara nga 69 nĂ« 51.
  • NĂ« instruksionin LOAD_ATTR Ă«shtĂ« aktivizuar mekanizmi i caching tĂ« opcode-ve tĂ« veçanta, i cili ka lejuar pĂ«rshpejtimin e punĂ«s me atributet e zakonshme deri nĂ« 36%, dhe me slotet deri nĂ« 44%.
  • Kur ndĂ«rtimi i Python bĂ«het me opsionin '--enable-optimizations', tani aktivizohet moda '-fno-semantic-interposition', e cila lejon qĂ«, krahasuar me ndĂ«rtimin me opsionin '--enable-shared', tĂ« pĂ«rshpejtojĂ« punĂ«n e interpreterit deri nĂ« 30%.
  • NĂ« modulĂ«t hashlib dhe ssl Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r OpenSSL 3.0.0 dhe Ă«shtĂ« ndaluar mbĂ«shtetja pĂ«r versionet e OpenSSL mĂ« tĂ« vjetra se 1.1.1.
  • Parsers e vjetĂ«r Ă«shtĂ« eliminuar, i cili Ă«shtĂ« zĂ«vendĂ«suar nga parseri PEG (Parsing Expression Grammar) nĂ« degen e kaluar. Ă«shtĂ« hequr moduli formatter. Nga API asyncio Ă«shtĂ« hequr parametri loop. JanĂ« hequr metodat qĂ« mĂ« parĂ« ishin shpallur si tĂ« papĂ«rdorura. JanĂ« eliminuar funksionet Py_UNICODE_str*, tĂ« cilat manipulojnĂ« me stringjet Py_UNICODE*.
  • Moduli distutils Ă«shtĂ« shpallur si i papĂ«rdorur dhe Ă«shtĂ« planifikuar tĂ« hiqet nĂ« Python 3.12. NĂ« vend tĂ« distutils rekomandohet pĂ«rdorimi i moduleve setuptools, packaging, platform, shutil, subprocess dhe sysconfig. StrukturĂ«s wstr nĂ« PyUnicodeObject gjithashtu i Ă«shtĂ« dhĂ«nĂ« statusi i papĂ«rdorur dhe planifikohet tĂ« hiqet.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster