Programmēšanas valodas Python 3.8 izlaišana

Pēc pusotra gada attīstības uzrādīts galvenās programmēšanas valodas izlaidums Python 3.8. Korektīvie atjauninājumi Python 3.8 filiālei ir plānots atbrīvot 18 mēnešu laikā. Kritiskās ievainojamības tiks novērstas 5 gadus līdz 2024. gada oktobrim. Korektīvie atjauninājumi 3.8 filiālei tiks izlaisti ik pēc diviem mēnešiem, un pirmais koriģējošais Python 3.8.1 izlaidums ir paredzēts decembrī.

Starp pievienotajiem jauninājumiem:

  • atbalsts piešķiršanas operācijas sarežģītās izteiksmēs. Ar jauno “:=” operatoru ir iespējams veikt vērtību piešķiršanas darbības citu izteiksmju iekšienē, piemēram, lai nosacījuma priekšrakstos un cilpu definēšanā izvairītos no dubultfunkciju izsaukumiem:

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

    while (bloks := f.read(256)) != ":
    ...

  • atbalsts jauna sintakse funkciju argumentu norādīšanai. Uzskaitot argumentus funkcijas definīcijas laikā, tagad varat norādīt "/", lai atdalītu argumentus, kuriem var piešķirt vērtības, pamatojoties uz secību, kādā vērtības tiek uzskaitītas funkcijas izsaukšanas laikā, no argumentiem, kurus var piešķirt. jebkurā secībā (mainīgais=vērtības sintakse) ). No praktiskā viedokļa jaunā funkcija ļauj Python funkcijām pilnībā atdarināt esošo funkciju uzvedību programmā C, kā arī izvairīties no saistīšanās ar konkrētiem nosaukumiem, piemēram, ja nākotnē plānots mainīt parametra nosaukumu.

    Karogs “/” papildina iepriekš pievienoto karodziņu “*”, atdalot mainīgos, kuriem piemērojams tikai piešķīrums formā “mainīgais=vērtība”. Piemēram, funkcijā "def f(a, b, /, c, d, *, e, f):" mainīgos "a" un "b" var piešķirt tikai tādā secībā, kādā ir norādītas vērtības. ,
    mainīgos “e” un “f”, tikai izmantojot piešķiršanu “mainīgais=vērtība”, un mainīgos “c” un “d” jebkurā no šiem veidiem:

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

  • Pievienots jauna C API
    lai konfigurētu Python inicializācijas parametrus, ļaujot pilnībā kontrolēt visus konfigurācija un uzlabotas kļūdu apstrādes iespējas. Piedāvātā API ļauj viegli iegult Python tulka funkcionalitāti citās C lietojumprogrammās;

  • Īstenots jauns Vectorcall protokols ātrākai piekļuvei objektiem, kas rakstīti C valodā. Programmā CPython 3.8 piekļuve Vectorcall joprojām ir ierobežota tikai iekšējai lietošanai, pāreja uz publiski pieejamu API kategoriju ir plānota CPython 3.9;
  • Pievienots izsauc Runtime Audit Hooks, kas Python lietojumprogrammām un ietvariem nodrošina piekļuvi zema līmeņa informācijai par skripta gaitu, lai pārbaudītu veiktās darbības (piemēram, varat izsekot moduļu importam, failu atvēršanai, izmantojot izsekošanu, piekļuve tīkla ligzdām, koda palaišana, izmantojot exec, eval un run_mod);
  • Modulī marinādē nodrošināta Pickle 5 protokola atbalsts, ko izmanto objektu serializēšanai un deserializēšanai. Pickle ļauj optimizēt lielu datu apjomu pārsūtīšanu starp Python procesiem daudzkodolu un vairāku mezglu konfigurācijās, samazinot atmiņas kopēšanas operāciju skaitu un piemērojot papildu optimizācijas metodes, piemēram, izmantojot datu specifiskus saspiešanas algoritmus. Protokola piektā versija ir ievērojama ar ārpusjoslas pārraides režīma pievienošanu, kurā datus var pārsūtīt atsevišķi no galvenās sālījumu plūsmas.
  • Pēc noklusējuma ir aktivizēta ceturtā Pickle protokola versija, kas, salīdzinot ar trešo versiju, kas iepriekš tika piedāvāta pēc noklusējuma, ļauj nodrošināt lielāku veiktspēju un samazināt pārsūtīto datu apjomu;
  • Modulī ierakstot Ir ieviestas vairākas jaunas funkcijas:
    • Klase TypedDict asociatīvajiem masīviem, kuros ar atslēgām saistītajiem datiem ir skaidri norādīta tipa informācija (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • RўReRї Burtiski, kas ļauj ierobežot parametru vai atgriešanas vērtību līdz dažām iepriekš definētām vērtībām (“Literal['savienots', 'atvienots']).
    • Būvniecība"Gala", kas ļauj definēt mainīgo, funkciju, metožu un klašu vērtības, kuras nevar mainīt vai atkārtoti piešķirt ("pi: Final[float] = 3.1415926536").
  • Pievienota iespēja kompilētajiem failiem piešķirt kešatmiņu ar baitu kodu, saglabāta atsevišķā FS kokā un atdalīta no direktorijiem ar kodu. Failu saglabāšanas ceļš ar baitkodu tiek iestatīts, izmantojot mainīgo PITONPIKACHEPREFIKSS vai opcija "-X pycache_prefix";
  • Īstenots iespēja izveidot Python atkļūdošanas būves, kurās tiek izmantots laidienam identisks ABI, kas ļauj atkļūdošanas būvējumos ielādēt SI valodā rakstītus paplašinājumus, kas kompilēti stabiliem laidieniem;
  • f-strings (formatēti literāļi ar prefiksu "f") nodrošina atbalstu operatoram = (piemēram, "f'{expr=}'"), kas ļauj pārvērst izteiksmi par tekstu, lai atvieglotu atkļūdošanu. Piemēram:

    ››› lietotājs = 'eric_idle'
    ››› dalībnieks_kopš = datums(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Izteiksme "turpināt» atļauts izmantot bloka iekšpusē beidzot;
  • Pievienots jauns modulis multiprocessing.shared_memory, kas ļauj izmantot koplietotās atmiņas segmentus daudzprocesu konfigurācijās;
  • Windows platformā asyncio ieviešana ir pārvietota, lai izmantotu klasi ProactorEventLoop;
  • LOAD_GLOBAL instrukcijas veiktspēja ir palielināta par aptuveni 40%, pateicoties jauna objekta koda kešatmiņas mehānisma izmantošanai.

Avots: opennet.ru

Pievieno komentāru