Pagpagawas sa Python 3.8 programming language

Human sa usa ka tuig ug tunga sa kalamboan gipresentar mayor nga pagpagawas sa pinulongan sa programming Python 3.8. Mga pag-update sa pagtul-id alang sa sanga sa Python 3.8 ang giplano buhian sulod sa 18 ka bulan. Ang mga kritikal nga kahuyangan ayohon sulod sa 5 ka tuig hangtod sa Oktubre 2024. Ang corrective updates alang sa 3.8 branch ipagawas matag duha ka bulan, uban sa unang corrective release sa Python 3.8.1 nga gikatakda sa Disyembre.

Lakip sa gidugang mga inobasyon:

  • suporta mga operasyon sa assignment sulod sa komplikadong mga ekspresyon. Uban sa bag-ong operator nga ":=", posible nga himuon ang mga operasyon sa pag-assign sa kantidad sa sulod sa ubang mga ekspresyon, pananglitan, aron malikayan ang doble nga function nga tawag sa mga conditional nga pahayag ug kung gihubit ang mga loop:

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

    samtang (block := f.read(256)) !=":
    ...

  • suporta bag-ong syntax alang sa pagtino sa mga argumento sa function. Kung nag-enumerate sa mga argumento sa panahon sa usa ka kahulugan sa function, mahimo nimong itakda ang usa ka "/" aron mabulag ang mga argumento nga mahimo ra ma-assign nga mga kantidad base sa han-ay kung diin ang mga kantidad giihap sa panahon sa tawag sa function, gikan sa mga argumento nga mahimong itudlo. sa bisan unsang han-ay (variable=value syntax) ). Sa praktikal nga bahin, ang bag-ong feature nagtugot sa mga function sa Python sa hingpit nga pagsundog sa kinaiya sa kasamtangan nga mga function sa C, ug usab sa paglikay sa pagbugkos sa piho nga mga ngalan, alang sa panig-ingnan, kon ang parameter ngalan giplano nga usbon sa umaabot.

    Ang "/" nga bandera nagpuno sa gidugang kaniadto nga "*" nga bandila, nga nagbulag sa mga variable diin usa lamang ka buluhaton sa porma nga "variable=value" ang magamit. Pananglitan, sa function nga "def f(a, b, /, c, d, *, e, f):" ang mga variables "a" ug "b" mahimo ra itudlo sa han-ay ang mga kantidad nga gilista ,
    variables "e" ug "f", pinaagi lamang sa assignment "variable=value", ug variables "c" ug "d" sa bisan asa sa mosunod nga mga paagi:

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

  • Gidugang bag-ong C API
    aron ma-configure ang Python initialization nga mga parameter, nga nagtugot sa hingpit nga pagkontrol sa tanan configuration ug paghatag og mga advanced error handling facility. Ang gisugyot nga API nagpasayon ​​sa pag-embed sa Python interpreter functionality ngadto sa ubang C nga mga aplikasyon;

  • Gipatuman bag-ong Vectorcall protocol alang sa mas paspas nga pag-access sa mga butang nga gisulat sa C nga pinulongan. Sa CPython 3.8, ang pag-access sa Vectorcall limitado gihapon sa internal nga paggamit, ang pagbalhin sa kategorya sa mga API nga magamit sa publiko giplano sa CPython 3.9;
  • Gidugang nagtawag sa Runtime Audit Hooks, nga naghatag sa mga aplikasyon ug mga frameworks sa Python nga adunay access sa ubos nga lebel nga impormasyon mahitungod sa pag-uswag sa script aron sa pag-audit sa mga aksyon nga gihimo (pananglitan, mahimo nimong masubay ang pag-import sa mga module, pag-abli sa mga file, gamit ang usa ka pagsubay, pag-access sa mga socket sa network, pagpadagan sa code pinaagi sa exec, eval ug run_mod);
  • Sa module asinan gihatag suporta alang sa Pickle 5 protocol, nga gigamit alang sa serializing ug deserializing nga mga butang. Gitugotan ka sa Pickle nga ma-optimize ang pagbalhin sa daghang mga datos tali sa mga proseso sa Python sa multi-core ug multi-node nga mga pag-configure pinaagi sa pagkunhod sa gidaghanon sa mga operasyon sa pagkopya sa memorya ug pag-apply sa dugang nga mga pamaagi sa pag-optimize sama sa paggamit sa mga algorithm sa compression nga piho sa datos. Ang ikalima nga bersyon sa protocol mao ang talagsaon alang sa pagdugang sa usa ka out-of-band transmission mode, diin ang data mahimong ipasa nga gilain gikan sa main pickle stream.
  • Sa kasagaran, ang ikaupat nga bersyon sa Pickle protocol gi-activate, nga, kon itandi sa ikatulo nga bersyon kaniadto nga gitanyag pinaagi sa default, nagtugot alang sa mas taas nga performance ug usa ka pagkunhod sa gidak-on sa transmitted data;
  • Sa module pag-type Daghang mga bag-ong bahin ang gipaila:
    • Класс Gi-type ngaDict para sa mga associative arrays diin ang type nga impormasyon klaro nga gipiho para sa data nga nalangkit sa mga yawe (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Type Literal, nga nagtugot kanimo nga limitahan ang usa ka parameter o ibalik ang kantidad sa pipila nga gitakda nang daan nga mga kantidad ("Literal ['konektado', 'nadiskonekta']").
    • Pagtukod"Katapusan nga", nga nagpaposible sa paghubit sa mga bili sa mga baryable, mga gimbuhaton, mga pamaagi ug mga klase nga dili mausab o ma-reassign ("pi: Katapusan [float] = 3.1415926536").
  • Gidugang ang abilidad sa pag-assign sa usa ka cache alang sa gihugpong nga mga file nga adunay bytecode, gitipigan sa usa ka bulag nga punoan sa FS ug gibulag gikan sa mga direktoryo nga adunay code. Ang agianan alang sa pagtipig sa mga file nga adunay bytecode gitakda pinaagi sa usa ka variable PYTHONPYCACHEPREFIX o ang opsyon nga "-X pycache_prefix";
  • Gipatuman ang abilidad sa paghimo sa debug builds sa Python nga naggamit sa ABI nga susama sa release, nga nagtugot kanimo sa pag-load sa mga extension nga gisulat sa SI nga pinulongan, gihugpong para sa stable nga pagpagawas, sa debug build;
  • f-strings (formatted literals prefixed with 'f') naghatag og suporta para sa = operator (pananglitan, "f'{expr=}'"), nga nagtugot kanimo sa pag-convert sa usa ka ekspresyon ngadto sa text para sa mas sayon ​​nga pag-debug. Pananglitan:

    ››› user = 'eric_idle'
    ››› membro_sukad = petsa(1975, 7, 31)
    ››› f'{user=} {miyembro_sukad=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Pagpahayag "magpadayon» gitugotan nga gamiton sulod sa usa ka bloke sa katapusan;
  • Bag-ong module gidugang multiprocessing.shared_memory, nagtugot sa paggamit sa gipaambit nga mga bahin sa panumduman sa multiprocess configurations;
  • Sa plataporma sa Windows, ang pagpatuman sa asyncio gibalhin aron magamit ang klase ProactorEventLoop;
  • Ang pagbuhat sa LOAD_GLOBAL nga instruksiyon nadugangan sa gibana-bana nga 40% tungod sa paggamit sa bag-ong object code caching mechanism.

Source: opennet.ru

Idugang sa usa ka comment