Python 3.8 programazio lengoaia kaleratzea

Urte eta erdiko garapenaren ostean aurkeztu programazio-lengoaia nagusien bertsioa Python 3.8. Python 3.8 adarraren eguneratze zuzentzaileak aurreikusita dago 18 hilabeteko epean kaleratzea. Ahultasun larriak 5 urtez konponduko dira 2024ko urrira arte. 3.8 adarraren eguneratze zuzentzaileak bi hilabetean behin kaleratuko dira, Python 3.8.1-en lehen bertsio zuzentzailea abendurako aurreikusita.

Gehituen artean berrikuntzak:

  • Lagundu esleipen-eragiketak adierazpen konplexuen barruan. β€œ:=” operadore berriarekin, balore-esleipen-eragiketak egin daitezke beste adierazpen batzuetan, adibidez, baldintzazko adierazpenetan eta begiztak definitzerakoan funtzio dei bikoitzak saihesteko:

    baldin (n := len(a)) > 10:
    ...

    bitartean (blokea := f.read(256)) != ":
    ...

  • Lagundu funtzioen argumentuak zehazteko sintaxi berria. Funtzio definizio batean argumentuak zenbatzen dituzunean, orain "/" bat zehaztu dezakezu balioak soilik esleitu daitezkeen argumentuak bereizteko, funtzio-deian balioak zenbatzen diren ordenaren arabera, esleitu daitezkeen argumentuetatik. edozein ordenatan (aldagaia=balioaren sintaxia) ). Alderdi praktikoan, funtzio berriak Python-en funtzioei C-n dauden funtzioen portaera guztiz emulatzeko aukera ematen die, eta, gainera, izen zehatzekin lotzea ekiditeko, adibidez, parametroaren izena etorkizunean aldatzea aurreikusita badago.

    "/" banderak aurretik gehitutako "*" bandera osatzen du, "aldagaia=balioa" formako esleipena soilik aplikatzen zaien aldagaiak bereiziz. Adibidez, "def f(a, b, /, c, d, *, e, f):" funtzioan "a" eta "b" aldagaiak balioak zerrendatzen diren ordenan soilik esleitu daitezke. ,
    "e" eta "f" aldagaiak, "aldagaia=balioa" esleipenaren bidez soilik, eta "c" eta "d" aldagaiak honako modu hauetako batean:

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

  • Gehituta C API berria
    Python hasierako parametroak konfiguratzeko, guztien kontrol osoa ahalbidetuz konfigurazioa eta akatsak kudeatzeko instalazio aurreratuak eskaintzea. Proposatutako APIak Python interpretearen funtzionaltasuna beste C aplikazio batzuetan txertatzea errazten du;

  • Inplementatua Vectorcall protokolo berria C hizkuntzan idatzitako objektuetara bizkorrago sartzeko. CPython 3.8-n, Vectorcall-erako sarbidea barne erabilerara mugatzen da oraindik; publikoki eskuragarri dauden APIen kategoriara transferitzea aurreikusita dago CPython 3.9-n;
  • Gehituta Runtime Audit Hooks-ei dei egiten die, Python-en aplikazioak eta markoak script-aren aurrerapenari buruzko informazio baxurako sarbidea eskaintzen dutenak, egindako ekintzak ikuskatzeko (adibidez, moduluen inportazioaren jarraipena egin dezakezu, fitxategiak irekiz, arrasto bat erabiliz, sareko socket-ak atzitzea, kodea exekutatzea exec, eval eta run_mod bidez);
  • Moduluan pickle emandako Pickle 5 protokoloaren euskarria, objektuak serializatu eta deserializatzeko erabiltzen dena. Pickle-k Python prozesuen arteko datu-kopuru handien transferentzia optimizatzeko aukera ematen du nukleo anitzeko eta nodo anitzeko konfigurazioetan, memoria kopiatzeko eragiketa kopurua murriztuz eta optimizazio-teknika osagarriak aplikatuz, hala nola datuen konpresio-algoritmo espezifikoak erabiliz. Protokoloaren bosgarren bertsioa bandaz kanpoko transmisio modua gehitzeagatik nabarmentzen da, zeinetan datuak ozpinetako korronte nagusitik bereizita transmititu daitezkeen.
  • Lehenespenez, Pickle protokoloaren laugarren bertsioa aktibatuta dago, lehen lehenespenez eskainitako hirugarren bertsioarekin alderatuta, errendimendu handiagoa eta transmititutako datuen tamaina murriztea ahalbidetzen duena;
  • Moduluan idatziz Hainbat ezaugarri berri sartzen dira:
    • Class TypedDict gakoekin lotutako datuetarako modu esplizituan zehazten den matrize elkartuetarako ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Mota literal, parametro bat edo balio itzultzeko aurrez definitutako balio batzuetara mugatzeko aukera ematen duena ("Literal['konektatuta', 'deskonektatuta']").
    • Eraikuntza "end", aldagaien, funtzioen, metodoen eta klaseen balioak definitzeko aukera ematen duena, aldatu edo berriro esleitu ezin diren ("pi: Final[float] = 3.1415926536").
  • Konpilatutako fitxategiei bytecode batekin cache bat esleitzeko gaitasuna gehitu da, FS zuhaitz bereizi batean gordeta eta kodearekin direktorioetatik bereizita. Bytecode duten fitxategiak gordetzeko bidea aldagai baten bidez ezartzen da PYTHONPYCACHEPREFIX edo "-X pycache_prefix" aukera;
  • Inplementatua bertsioaren berdina den ABI bat erabiltzen duten Python-en arazketa-eraikuntzak sortzeko gaitasuna, SI lengoaian idatzitako luzapenak kargatzeko aukera ematen duena, bertsio egonkorretarako konpilatuta, arazketa-eraiketetan;
  • f-kateek (formateatutako literalak 'f' aurrizkiarekin) = operadoreari eusten diote (adibidez, "f'{expr=}'"), eta horrek adierazpen bat testu bihurtzeko aukera ematen du errazago arazketa egiteko. Adibidez:

    β€Ίβ€Ίβ€Ί erabiltzailea = 'eric_idle'
    β€Ίβ€Ίβ€Ί kidea_ordutik = data (1975, 7, 31)
    β€Ίβ€Ίβ€Ί f'{erabiltzailea=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Adierazpena "jarraituΒ» bloke baten barruan erabiltzeko baimena azkenik;
  • Modulu berria gehitu da prozesaketa anitzeko.memoria_partekatua, partekatutako memoria-segmentuak prozesu anitzeko konfigurazioetan erabiltzeko aukera emanez;
  • Windows plataforman, asyncio inplementazioa klasea erabiltzeko mugitu da ProactorEventLoop;
  • LOAD_GLOBAL instrukzioaren errendimendua % 40 handitu da gutxi gorabehera, objektu-kodearen cache-mekanismo berri bat erabiltzeagatik.

Iturria: opennet.ru

Gehitu iruzkin berria