Vrystelling van die Python 3.8-programmeertaal

Na 'n jaar en 'n half van ontwikkeling aangebied groot programmeertaal vrystelling Python 3.8. Korrektiewe opdaterings vir Python 3.8-tak beplan word vrylating binne 18 maande. Kritieke kwesbaarhede sal vir 5 jaar tot Oktober 2024 reggestel word. Korrektiewe opdaterings vir die 3.8-tak sal elke twee maande vrygestel word, met die eerste regstellende vrystelling van Python 3.8.1 wat vir Desember geskeduleer is.

Onder die bygevoeg innovasies:

  • Ondersteun opdragbewerkings binne komplekse uitdrukkings. Met die nuwe ":="-operateur is dit moontlik om waardetoewysingsbewerkings binne ander uitdrukkings uit te voer, byvoorbeeld om dubbele funksie-oproepe in voorwaardelike stellings te vermy en wanneer lusse gedefinieer word:

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

    while (blok := f.lees(256)) != ":
    ...

  • Ondersteun nuwe sintaksis om funksie-argumente te spesifiseer. Wanneer u argumente tydens 'n funksiedefinisie opsom, kan u nou 'n "/" spesifiseer om argumente wat slegs waardes toegeken kan word te skei gebaseer op die volgorde waarin die waardes opgesom word tydens die funksie-oproep, van argumente wat toegeken kan word in enige volgorde (veranderlike=waarde-sintaksis) ). Op die praktiese kant laat die nuwe kenmerk funksies in Python toe om die gedrag van bestaande funksies in C heeltemal na te boots, en ook om binding aan spesifieke name te vermy, byvoorbeeld as die parameternaam beplan word om in die toekoms verander te word.

    Die "/"-vlag komplementeer die voorheen bygevoegde "*"-vlag, en skei veranderlikes waarvoor slegs 'n opdrag in die vorm "veranderlike=waarde" van toepassing is. Byvoorbeeld, in die funksie "def f(a, b, /, c, d, *, e, f):" kan die veranderlikes "a" en "b" slegs toegeken word in die volgorde waarin die waardes gelys word ,
    veranderlikes "e" en "f", slegs deur die opdrag "veranderlike=waarde", en veranderlikes "c" en "d" op enige van die volgende maniere:

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

  • Bygevoeg nuwe C API
    om Python-inisialiseringsparameters op te stel, wat volledige beheer oor alles moontlik maak konfigurasie en die verskaffing van gevorderde fouthanteringsfasiliteite. Die voorgestelde API maak dit maklik om Python-tolkfunksionaliteit in ander C-toepassings in te sluit;

  • Geïmplementeer nuwe Vectorcall-protokol vir vinniger toegang tot voorwerpe wat in C-taal geskryf is. In CPython 3.8 is toegang tot Vectorcall steeds beperk tot interne gebruik; oordrag na die kategorie publiek toeganklike API's word in CPython 3.9 beplan;
  • Bygevoeg oproepe na Runtime Audit Hooks, wat toepassings en raamwerke in Python voorsien van toegang tot laevlak inligting oor die vordering van die skrip om die aksies wat uitgevoer is te oudit (jy kan byvoorbeeld die invoer van modules naspoor, lêers oopmaak, 'n spoor gebruik, toegang tot netwerksokke, hardloopkode deur exec, eval en run_mod);
  • In die module piekel beveilig ondersteuning vir die Pickle 5-protokol, wat gebruik word vir serialisering en deserialisering van voorwerpe. Pickle laat jou toe om die oordrag van groot hoeveelhede data tussen Python-prosesse in multi-kern en multi-node konfigurasies te optimaliseer deur die vermindering van die aantal geheue kopieer bewerkings en die toepassing van bykomende optimalisering tegnieke soos die gebruik van data-spesifieke kompressie algoritmes. Die vyfde weergawe van die protokol is opvallend vir die byvoeging van 'n buite-band transmissiemodus, waarin data afsonderlik van die hoofpiekelstroom versend kan word.
  • By verstek word die vierde weergawe van die Pickle-protokol geaktiveer, wat, in vergelyking met die derde weergawe wat voorheen by verstek aangebied is, hoër werkverrigting en 'n vermindering in die grootte van gestuurde data moontlik maak;
  • In die module tik Verskeie nuwe kenmerke word bekendgestel:
    • Klas GetikDict vir assosiatiewe skikkings waarin tipe inligting uitdruklik gespesifiseer word vir die data wat met die sleutels geassosieer word (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Tipe letterlike, wat jou toelaat om 'n parameter te beperk of waarde terug te gee tot 'n paar voorafbepaalde waardes ("Literal['verbonde', 'ontkoppel']").
    • Konstruksie"Finale", wat dit moontlik maak om die waardes van veranderlikes, funksies, metodes en klasse te definieer wat nie verander of hertoegewys kan word nie ("pi: Final[float] = 3.1415926536").
  • Bygevoeg die vermoë om 'n kas toe te wys vir saamgestelde lêers met bytecode, gestoor in 'n aparte FS-boom en geskei van die dopgehou met die kode. Die pad vir die stoor van lêers met greepkode word via 'n veranderlike gestel PYTHONPYCACHEPREFIX of die opsie "-X pycache_prefix";
  • Geïmplementeer die vermoë om ontfoutboubou van Python te skep wat 'n ABI gebruik wat identies is aan die vrystelling, wat jou toelaat om uitbreidings wat in SI-taal geskryf is, saamgestel vir stabiele vrystellings, in ontfoutbou te laai;
  • f-stringe (geformateerde letterlike voorvoegsel met 'f') bied ondersteuning vir die = operateur (byvoorbeeld, "f'{expr=}'"), wat jou toelaat om 'n uitdrukking na teks om te skakel vir makliker ontfouting. Byvoorbeeld:

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

  • Uitdrukking "voortgaan» toegelaat om binne 'n blok gebruik te word uiteindelik;
  • Nuwe module bygevoeg multiprocessing.shared_memory, wat die gebruik van gedeelde geheuesegmente in multiproseskonfigurasies toelaat;
  • Op die Windows-platform is die asyncio-implementering geskuif om die klas te gebruik ProactorEventLoop;
  • Die werkverrigting van die LOAD_GLOBAL-instruksie is met ongeveer 40% verhoog as gevolg van die gebruik van 'n nuwe objekkode-kasmeganisme.

Bron: opennet.ru

Voeg 'n opmerking