Izdaja programskega jezika Python 3.8

Po letu in pol razvoja predstavljeno izdaja glavnega programskega jezika Python 3.8. Popravne posodobitve za vejo Python 3.8 je načrtovana sprostitev v 18 mesecih. Kritične ranljivosti bodo odpravljene 5 let do oktobra 2024. Korektivne posodobitve za vejo 3.8 bodo izdane vsaka dva meseca, prva korektivna izdaja Python 3.8.1 pa je predvidena za december.

Med dodanimi inovacije:

  • Podpora operacije dodelitve znotraj kompleksnih izrazov. Z novim operatorjem »:=« je mogoče izvajati operacije dodeljevanja vrednosti znotraj drugih izrazov, da se na primer izognete dvojnim klicem funkcij v pogojnih stavkih in pri definiranju zank:

    če (n := len(a)) > 10:
    ...

    medtem ko (blok := f.read(256)) != ":
    ...

  • Podpora nova sintaksa za podajanje funkcijskih argumentov. Ko naštevate argumente med definicijo funkcije, lahko zdaj določite "/", da ločite argumente, ki jim je mogoče dodeliti vrednosti samo na podlagi vrstnega reda, v katerem so vrednosti naštete med klicem funkcije, od argumentov, ki jih je mogoče dodeliti v poljubnem vrstnem redu (skladnja spremenljivka=vrednost) ). S praktičnega vidika nova funkcija omogoča funkcijam v Pythonu, da v celoti posnemajo vedenje obstoječih funkcij v C in se tudi izognejo vezavi na določena imena, na primer, če je ime parametra načrtovano v prihodnosti spremeniti.

    Zastavica »/« dopolnjuje predhodno dodano zastavico »*« in ločuje spremenljivke, za katere je uporabna samo dodelitev v obliki »spremenljivka=vrednost«. Na primer, v funkciji "def f(a, b, /, c, d, *, e, f):" spremenljivki "a" in "b" lahko dodelite samo v vrstnem redu, kot so navedene vrednosti ,
    spremenljivki “e” in “f”, samo s prireditvijo “spremenljivka=vrednost”, spremenljivki “c” in “d” pa na enega od naslednjih načinov:

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

  • Dodano nov C API
    za konfiguracijo inicializacijskih parametrov Python, kar omogoča popoln nadzor nad vsemi konfiguracijo in zagotavljanje naprednih zmogljivosti za obravnavo napak. Predlagani API olajša vdelavo funkcionalnosti tolmača Python v druge aplikacije C;

  • Izvedeno nov protokol Vectorcall za hitrejši dostop do objektov, napisanih v jeziku C. V CPython 3.8 je dostop do Vectorcall še vedno omejen na interno uporabo, prehod v kategorijo javno dostopnih API-jev je predviden v CPython 3.9;
  • Dodano klice v Runtime Audit Hooks, ki aplikacijam in ogrodjem v Pythonu zagotavljajo dostop do informacij na nizki ravni o napredku skripta za revidiranje izvedenih dejanj (na primer, lahko sledite uvozu modulov, odpiranju datotek, uporabi sledi, dostop do omrežnih vtičnic, izvajanje kode prek exec, eval in run_mod);
  • V modulu pickle zavarovano podpora za protokol Pickle 5, ki se uporablja za serializacijo in deserializacijo predmetov. Pickle vam omogoča optimizacijo prenosa velikih količin podatkov med procesi Python v konfiguracijah z več jedri in več vozlišči z zmanjšanjem števila operacij kopiranja pomnilnika in uporabo dodatnih tehnik optimizacije, kot je uporaba algoritmov stiskanja, specifičnih za podatke. Peta različica protokola je znana po dodatku izvenpasovnega načina prenosa, v katerem se lahko podatki prenašajo ločeno od glavnega toka kumaric.
  • Privzeto je aktivirana četrta različica protokola Pickle, ki v primerjavi s prej privzeto ponujeno tretjo različico omogoča večjo zmogljivost in zmanjšanje velikosti prenesenih podatkov;
  • V modulu tipkanje Uvedenih je več novih funkcij:
    • Razred TypedDict za asociativne nize, v katerih so informacije o vrsti izrecno podane za podatke, povezane s ključi (»TypedDict('Point2D', x=int, y=int, label=str)«).
    • Tip Dobesedno, ki vam omogoča, da omejite parameter ali vrnjeno vrednost na nekaj vnaprej določenih vrednosti (»Literal['connected', 'disconnected']”).
    • Oblikovanje"konec«, ki omogoča definiranje vrednosti spremenljivk, funkcij, metod in razredov, ki jih ni mogoče spremeniti ali prerazporediti (»pi: Final[float] = 3.1415926536«).
  • Dodana možnost dodelitve predpomnilnika za prevedene datoteke z bajtno kodo, shranjene v ločenem drevesu FS in ločene od imenikov s kodo. Pot do shranjevanja datotek z bajtno kodo se nastavi preko spremenljivke PYTHONPYCACHEPREFIX ali možnost "-X pycache_prefix";
  • Izvedeno zmožnost ustvarjanja gradenj Pythona za odpravljanje napak, ki uporabljajo ABI, enak izdaji, kar vam omogoča nalaganje razširitev, napisanih v jeziku SI, prevedenih za stabilne izdaje, v zgradbah za odpravljanje napak;
  • f-nizi (formatirani literali s predpono 'f') zagotavljajo podporo za operator = (na primer "f'{expr=}'"), ki vam omogoča pretvorbo izraza v besedilo za lažje odpravljanje napak. Na primer:

    ››› uporabnik = 'eric_idle'
    ››› member_since = datum(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Izraz "naprej» dovoljena uporaba znotraj bloka končno;
  • Dodan nov modul multiprocessing.shared_memory, ki omogoča uporabo segmentov skupnega pomnilnika v večprocesnih konfiguracijah;
  • Na platformi Windows je bila implementacija asyncio premaknjena na uporabo razreda ProactorEventLoop;
  • Zmogljivost ukaza LOAD_GLOBAL se je povečala za približno 40 % zaradi uporabe novega mehanizma za predpomnjenje objektne kode.

Vir: opennet.ru

Dodaj komentar