Rilis basa pamrograman Python 3.8

Sawise setahun lan setengah pembangunan diwenehi release basa pemrograman utama Python 3.8. Nganyari korektif kanggo Python 3.8 cabang direncanakake release ing 18 sasi. Kerentanan kritis bakal didandani suwene 5 taun nganti Oktober 2024. Nganyari korektif kanggo cabang 3.8 bakal dirilis saben rong sasi, karo release mbenakake pisanan Python 3.8.1 dijadwal kanggo Desember.

Antarane ditambahake inovasi:

  • support operasi penugasan ing ekspresi kompleks. Kanthi operator ": =" anyar, sampeyan bisa nindakake operasi penugasan nilai ing ekspresi liyane, contone, kanggo ngindhari panggilan fungsi ganda ing pernyataan kondisional lan nalika nemtokake puteran:

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

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

  • support sintaks anyar kanggo nemtokake argumen fungsi. Nalika ngetung argumen sajrone definisi fungsi, sampeyan saiki bisa nemtokake "/" kanggo misahake argumen sing mung bisa diwenehi nilai adhedhasar urutan nilai kasebut sajrone panggilan fungsi, saka argumen sing bisa ditugasake. ing urutan apa wae (variabel = sintaks nilai) ). Ing sisih praktis, fitur anyar ngidini fungsi ing Python kanggo rampung emulate prilaku fungsi ana ing C, lan uga supaya ora naleni jeneng tartamtu, Contone, yen jeneng parameter wis ngrancang bakal diganti ing mangsa.

    GendΓ©ra "/" nglengkapi gendera "*" sing ditambahake sadurunge, misahake variabel sing mung ana tugas ing wangun "variabel = nilai" sing ditrapake. Contone, ing fungsi "def f(a, b, /, c, d, *, e, f):" variabel "a" lan "b" mung bisa diutus ing urutan nilai sing kadhaptar. ,
    variabel "e" lan "f", mung liwat penugasan "variabel = nilai", lan variabel "c" lan "d" kanthi cara ing ngisor iki:

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

  • Ditambahake anyar C API
    kanggo ngatur paramèter initialization Python, ngidini kontrol lengkap kabeh konfigurasi lan nyedhiyakake fasilitas penanganan kesalahan sing luwih maju. API ngajokaken nggampangake kanggo nampilaké fungsi interpreter Python menyang aplikasi C liyane;

  • Dilaksanakake protokol Vectorcall anyar kanggo akses luwih cepet kanggo obyek ditulis ing basa C. Ing CPython 3.8, akses menyang Vectorcall isih diwatesi kanggo panggunaan internal; transfer menyang kategori API sing bisa diakses umum direncanakake ing CPython 3.9;
  • Ditambahake telpon kanggo Runtime Audit pancing, kang nyedhiyani aplikasi lan frameworks ing Python karo akses kanggo informasi tingkat kurang bab kemajuan saka script kanggo audit tumindak dileksanakake (Contone, sampeyan bisa nglacak ngimpor modul, mbukak file, nggunakake tilak, ngakses soket jaringan, kode mlaku liwat exec, eval lan run_mod);
  • Ing modul acar dijamin support kanggo protokol Pickle 5, digunakake kanggo serializing lan deserializing obyek. Pickle ngijini sampeyan kanggo ngoptimalake transfer saka jumlah gedhe saka data antarane pangolahan Python ing multi-inti lan konfigurasi multi-simpul dening ngurangi jumlah operasi salinan memori lan aplikasi Techniques Optimization tambahan kayata nggunakake algoritma komprΓ¨si data-tartamtu. Versi kaping lima saka protokol kacathet kanggo Kajaba saka mode transmisi out-of-band, kang data bisa ditularakΓ© kanthi kapisah saka stream pickle utama.
  • Kanthi gawan, versi papat protokol Pickle diaktifake, sing, dibandhingake karo versi katelu sing sadurunge ditawakake kanthi standar, ngidini kinerja sing luwih dhuwur lan nyuda ukuran data sing dikirim;
  • Ing modul ngetik Sawetara fitur anyar dienalake:
    • Класс TypedDict kanggo larik asosiatif kang informasi jinis ditetepake kanthi tegas kanggo data sing digandhengake karo tombol ("TypedDict('Point2D', x=int, y=int, label=str)”).
    • Gaya Literal, sing ngidini sampeyan mbatesi parameter utawa ngasilake nilai menyang sawetara nilai sing wis ditemtokake ("Literal ['disambungake', 'pedhot']").
    • Konstruksi"final", sing ndadekake bisa nemtokake nilai variabel, fungsi, metode lan kelas sing ora bisa diganti utawa ditugasake maneh ("pi: Final [float] = 3.1415926536").
  • Nambahake kemampuan kanggo nemtokake cache kanggo file sing dikompilasi kanthi bytecode, disimpen ing wit FS sing kapisah lan dipisahake saka direktori kanthi kode kasebut. Path kanggo nyimpen file kanthi bytecode disetel liwat variabel PYTHONPYCACHEPREFIX utawa pilihan "-X pycache_prefix";
  • Dilaksanakake kemampuan kanggo nggawe debug mbangun Python sing nggunakake ABI podho rupo release, sing ngijini sampeyan kanggo mbukak ekstensi ditulis ing basa SI, nyawiji kanggo rilis stabil, ing debug mbangun;
  • f-strings (huruf format sing diawali karo 'f') nyedhiyakake dhukungan kanggo operator = (contone, "f'{expr=}'"), sing ngidini sampeyan ngowahi ekspresi dadi teks supaya gampang debugging. Tuladhane:

    β€Ίβ€Ίβ€Ί panganggo = 'eric_idle'
    β€Ίβ€Ίβ€Ί anggota_wiwit = tanggal(1975, 7, 31)
    β€Ίβ€Ίβ€Ί f'{user=} {anggota_wiwit=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Ekspresi"terusΒ» diijini digunakake ing blok pungkasanipun;
  • Modul anyar ditambahake multiprocessing.shared_memory, ngidini panggunaan segmen memori sing dienggo bareng ing konfigurasi multiproses;
  • Ing platform Windows, implementasine asyncio wis dipindhah kanggo nggunakake kelas ProactorEventLoop;
  • Kinerja instruksi LOAD_GLOBAL wis tambah kira-kira 40% amarga nggunakake mekanisme caching kode obyek anyar.

Source: opennet.ru

Add a comment