Ngaleupaskeun basa programming Python 3.8

Sanggeus sataun satengah pangwangunan ditepikeun release basa programming utama Python 3.8. Apdet corrective pikeun Python 3.8 cabang direncanakeun release dina 18 bulan. Kerentanan kritis bakal dibenerkeun salami 5 taun dugi ka Oktober 2024. Apdet corrective pikeun cabang 3.8 bakal dileupaskeun unggal dua bulan, jeung release corrective munggaran Python 3.8.1 dijadwalkeun pikeun Désémber.

Diantara nu ditambahkeun inovasi:

  • sokongan operasi ngerjakeun dina éksprési kompléks. Kalayan operator ": =" anyar, anjeun tiasa ngalakukeun operasi ngerjakeun nilai dina ekspresi anu sanés, contona, pikeun ngahindarkeun sauran fungsi ganda dina pernyataan kondisional sareng nalika netepkeun puteran:

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

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

  • sokongan sintaksis anyar pikeun nangtukeun argumen fungsi. Nalika ngitung argumen salami definisi fungsi, anjeun ayeuna tiasa netepkeun "/" pikeun misahkeun argumen anu ngan ukur tiasa dipasihkeun nilai dumasar kana urutan nilai-nilai anu diémutan nalika nelepon fungsi, tina argumen anu tiasa ditugaskeun. dina urutan naon (variabel=nilai sintaksis) ). Dina sisi praktis, fitur anyar ngamungkinkeun fungsi dina Python pikeun sakabéhna emulate paripolah fungsi aya dina C, sarta ogé ulah ngariung kana ngaran husus, Contona, upami nami parameter ieu rencanana bakal dirobah dina mangsa nu bakal datang.

    Bandéra "/" ngalengkepan bandéra "*" nu ditambahkeun saméméhna, misahkeun variabel nu ngan hiji tugas dina bentuk "variabel = nilai" lumaku. Contona, dina fungsi "def f(a, b, /, c, d, *, e, f):" variabel "a" jeung "b" ngan bisa ditugaskeun dina urutan nilai didaptarkeun. ,
    variabel "e" jeung "f", ngan ngaliwatan ngerjakeun "variabel = nilai", sarta variabel "c" jeung "d" dina salah sahiji cara di handap ieu:

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

  • Ditambahkeun C API anyar
    pikeun ngonpigurasikeun parameter initialization Python, ngamungkinkeun kadali lengkep sakabéh konfigurasi sarta nyadiakeun fasilitas penanganan kasalahan canggih. API anu diusulkeun ngagampangkeun pikeun nyelapkeun fungsionalitas juru basa Python kana aplikasi C anu sanés;

  • Dilaksanakeun protokol Vectorcall anyar pikeun aksés leuwih gancang ka objék ditulis dina basa C. Dina CPython 3.8, aksés ka Vectorcall masih dugi ka pamakean internal; mindahkeun kana kategori API anu tiasa diaksés ku masarakat direncanakeun dina CPython 3.9;
  • Ditambahkeun nelepon ka Runtime Inok Hooks, nu nyadiakeun aplikasi tur frameworks di Python jeung aksés ka informasi-tingkat low ngeunaan kamajuan naskah pikeun Inok lampah dipigawé (contona, anjeun tiasa ngalacak impor modul, muka file, ngagunakeun renik a, ngakses sockets jaringan, ngajalankeun kode ngaliwatan exec, eval na run_mod);
  • Dina modul asinan diamankeun rojongan pikeun Acar 5 protokol, dipaké pikeun serializing na deserializing objék. Acar ngidinan Anjeun pikeun ngaoptimalkeun mindahkeun jumlah badag data antara prosés Python dina konfigurasi multi-inti sarta multi-titik ku cara ngurangan jumlah operasi salinan memori sareng nerapkeun téhnik optimasi tambahan kayaning ngagunakeun algoritma komprési data-spésifik. Versi kalima tina protokol anu kasohor ditambah hiji mode transmisi kaluar-of-band, nu data bisa dikirimkeun misah ti stream acar utama.
  • Sacara standar, versi kaopat tina protokol Acar diaktipkeun, nu, dibandingkeun jeung versi katilu saméméhna ditawarkeun sacara standar, ngamungkinkeun pikeun pagelaran luhur sarta pangurangan dina ukuran data dikirimkeun;
  • Dina modul ketikan Sababaraha fitur anyar diwanohkeun:
    • kelas TypedDict pikeun arrays associative nu tipe informasi sacara eksplisit dieusian pikeun data pakait sareng kenop ("TypedDict ('Point2D', x = int, y = int, labél = str)").
    • ngetik Sacara literal, nu ngidinan Anjeun pikeun ngawatesan hiji parameter atawa balik nilai ka sababaraha nilai nu tos disetel ("Literal['dihubungkeun', 'dipegatkeun']").
    • Pangwangunan"final", anu ngamungkinkeun pikeun ngartikeun nilai variabel, fungsi, metode sareng kelas anu teu tiasa dirobih atanapi ditugaskeun deui ("pi: Final [float] = 3.1415926536").
  • Ditambahkeun kamampuhan pikeun napelkeun cache pikeun file disusun kalawan bytecode, disimpen dina tangkal FS misah tur dipisahkeun tina directories kalawan kode. Jalur pikeun nyimpen file nganggo bytecode diatur via variabel PYTHONPYCACHEPREFIX atawa pilihan "-X pycache_prefix";
  • Dilaksanakeun kamampuhan pikeun nyieun debug ngawangun Python anu ngagunakeun ABI idéntik jeung release nu, nu ngidinan Anjeun pikeun muka ekstensi ditulis dina basa SI, disusun pikeun release stabil, dina debug ngawangun;
  • f-strings (formatna literals diawalan jeung 'f') nyadiakeun rojongan pikeun operator = (contona, "f'{expr =}'"), nu ngidinan Anjeun pikeun ngarobah hiji ekspresi kana téks pikeun debugging gampang. Salaku conto:

    ››› pamaké = 'eric_idle'
    ››› anggota_ti = tanggal(1975, 7, 31)
    ››› f'{pamaké=} {anggota_ti=}'
    "pamaké = 'eric_idle' member_since = datetime.date(1975, 7, 31)"

  • Ekspresi"terus»diidinan dipaké di jero blok tungtungna;
  • modul anyar ditambahkeun multiprocessing.shared_memory, ngamungkinkeun pamakéan bagéan memori dibagikeun dina konfigurasi multiprocess;
  • Dina platform Windows, palaksanaan asyncio geus dipindahkeun ka make kelas ProactorEventLoop;
  • Kinerja instruksi LOAD_GLOBAL geus ngaronjat ku kurang leuwih 40% alatan pamakéan mékanisme cache kode objék anyar.

sumber: opennet.ru

Tambahkeun komentar