Eldono de la programlingvo Python 3.8

Post jaro kaj duono de evoluo prezentita grava programlingvo eldono python 3.8. Korektaj ĝisdatigoj por Python 3.8 branĉo estas planita liberigo ene de 18 monatoj. Kritikaj vundeblecoj estos riparitaj dum 5 jaroj ĝis oktobro 2024. Korektigaj ĝisdatigoj por la branĉo 3.8 estos publikigitaj ĉiujn du monatojn, kun la unua korekta eldono de Python 3.8.1 planita por decembro.

Inter la aldonitaj novigoj:

  • subteno asigno operacioj ene de kompleksaj esprimoj. Kun la nova operatoro “:=", eblas fari valorajn asigno-operaciojn ene de aliaj esprimoj, ekzemple, por eviti duoblajn funkciovokojn en kondiĉaj deklaroj kaj dum difinado de bukloj:

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

    dum (bloko := f.read(256)) != ":
    ...

  • subteno nova sintakso por specifi funkcio-argumentojn. Kiam vi nombras argumentojn dum funkciodifino, vi nun povas specifi "/" por apartigi argumentojn, kiuj povas esti asignitaj nur valoroj surbaze de la ordo, en kiu la valoroj estas listigitaj dum la funkciovoko, de argumentoj, kiuj povas esti asignitaj. en ajna ordo (variablo=valora sintakso) ). En la praktika flanko, la nova funkcio permesas al funkcioj en Python tute kopii la konduton de ekzistantaj funkcioj en C, kaj ankaŭ eviti ligi al specifaj nomoj, ekzemple, se la parametronomo estas planita esti ŝanĝita estonte.

    La flago "/" kompletigas la antaŭe aldonitan flagon "*", apartigante variablojn por kiuj nur asigno en la formo "variablo=valoro" estas aplikebla. Ekzemple, en la funkcio "def f(a, b, /, c, d, *, e, f):" la variabloj "a" kaj "b" povas esti asignitaj nur en la ordo, en kiu la valoroj estas listigitaj. ,
    variabloj "e" kaj "f", nur per la asigno "variablo=valoro", kaj variabloj "c" kaj "d" en iu ajn el la sekvaj manieroj:

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

  • Aldonita nova C API
    por agordi Python-komencigajn parametrojn, permesante kompletan kontrolon super ĉio agordo kaj disponigante altnivelajn erartraktajn instalaĵojn. La proponita API faciligas enigi Python-interpretfunkciecon en aliajn C-aplikaĵojn;

  • Efektivigita nova Vectorcall-protokolo por pli rapida aliro al objektoj skribitaj en C-lingvo. En CPython 3.8, aliro al Vectorcall ankoraŭ estas limigita al interna uzo; translokigo al la kategorio de publike alireblaj API-oj estas planita en CPython 3.9;
  • Aldonita vokas al Runtime Audit Hooks, kiuj provizas aplikojn kaj kadrojn en Python kun aliro al malaltnivelaj informoj pri la progreso de la skripto por kontroli la agojn faritajn (ekzemple, vi povas spuri la importon de moduloj, malfermante dosierojn, uzante spuron, alirante retajn ingojn, kurante kodon per exec, eval kaj run_mod);
  • En la modulo piklaĵo provizita subteno por la Pickle 5 protokolo, uzata por seriigi kaj deserialigi objektojn. Pickle permesas al vi optimumigi la translokigon de grandaj kvantoj da datumoj inter Python-procezoj en multkernaj kaj plurnodaj agordoj reduktante la nombron da memorkopiaj operacioj kaj aplikante pliajn optimumigajn teknikojn kiel uzi datumspecifajn kunpremajn algoritmojn. La kvina versio de la protokolo estas rimarkinda pro la aldono de ekster-de-grupa dissendreĝimo, en kiu datenoj povas esti elsenditaj aparte de la ĉefa pikla fluo.
  • Defaŭlte, la kvara versio de la protokolo Pickle estas aktivigita, kiu, kompare kun la tria versio antaŭe ofertita defaŭlte, ebligas pli altan rendimenton kaj redukton de la grandeco de transdonitaj datumoj;
  • En la modulo tajpi Pluraj novaj funkcioj estas lanĉitaj:
    • Класс TajpitaDict por asociaj tabeloj en kiuj tipinformoj estas eksplicite specifitaj por la datumoj asociitaj kun la ŝlosiloj ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tajpu Laŭvorta, kiu permesas vin limigi parametron aŭ redoni valoron al kelkaj antaŭdifinitaj valoroj ("Laŭvorta['konektita', 'malkonektita']").
    • Dezajno"Fino", kiu ebligas difini la valorojn de variabloj, funkcioj, metodoj kaj klasoj, kiuj ne povas esti ŝanĝitaj aŭ reasignitaj ("pi: Fino[float] = 3.1415926536").
  • Aldonita la kapablo atribui kaŝmemoron por kompilitaj dosieroj kun bajtokodo, konservita en aparta FS-arbo kaj apartigita de la dosierujoj kun la kodo. La vojo por konservi dosierojn kun bajtokodo estas agordita per variablo PYTHONPYCACHEPREFIX aŭ la opcion "-X pycache_prefix";
  • Efektivigita la kapablo krei sencimigajn konstruojn de Python, kiuj uzas ABI identan al la eldono, kiu ebligas al vi ŝargi etendaĵojn skribitajn en SI-lingvo, kompilitaj por stabilaj eldonoj, en sencimigaj konstruoj;
  • f-ĉenoj (formatitaj literaloj prefiksitaj per 'f') provizas subtenon por la operatoro = (ekzemple, "f'{expr=}'"), kiu ebligas al vi konverti esprimon al teksto por pli facila senararigado. Ekzemple:

    ››› uzanto = 'eric_idle'
    ››› membro_ekde = dato (1975, 7, 31)
    ››› f'{uzanto=} {membro_dede=}'
    "uzanto='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Esprimo"daŭrigi» permesite esti uzata ene de bloko fine;
  • Nova modulo aldonita multprocesado.kunhava_memoro, permesante la uzon de komunaj memorsegmentoj en multiprocezaj konfiguracioj;
  • Sur la Vindoza platformo, la asyncio-efektivigo estis movita por uzi la klason ProactorEventLoop;
  • La agado de la instrukcio LOAD_GLOBAL estis pliigita je proksimume 40% pro la uzo de nova objektkoda kaŝmemormekanismo.

fonto: opennet.ru

Aldoni komenton