Paglabas ng Python 3.8 programming language

Pagkatapos ng isang taon at kalahati ng pag-unlad ipinakita pangunahing pagpapalabas ng wikang programming Python 3.8. Mga corrective update para sa Python 3.8 branch binalak ilabas sa loob ng 18 buwan. Ang mga kritikal na kahinaan ay aayusin sa loob ng 5 taon hanggang Oktubre 2024. Ang mga corrective update para sa 3.8 branch ay ilalabas bawat dalawang buwan, kasama ang unang corrective release ng Python 3.8.1 na naka-iskedyul para sa Disyembre.

Kabilang sa mga idinagdag mga inobasyon:

  • Suporta mga pagpapatakbo ng pagtatalaga sa loob ng mga kumplikadong expression. Gamit ang bagong operator na ":=", posibleng magsagawa ng mga pagpapatakbo ng pagtatalaga ng halaga sa loob ng iba pang mga expression, halimbawa, upang maiwasan ang mga double function na tawag sa mga conditional statement at kapag tinutukoy ang mga loop:

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

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

  • Suporta bagong syntax para sa pagtukoy ng mga argumento ng function. Kapag nag-enumerate ng mga argumento sa panahon ng isang function definition, maaari mo na ngayong tukuyin ang isang "/" upang paghiwalayin ang mga argumento na maaari lamang magtalaga ng mga halaga batay sa pagkakasunud-sunod kung saan ang mga halaga ay binibilang sa panahon ng function call, mula sa mga argumento na maaaring italaga sa anumang pagkakasunud-sunod (variable=value syntax) ). Sa praktikal na bahagi, pinapayagan ng bagong feature ang mga function sa Python na ganap na tularan ang pag-uugali ng mga umiiral na function sa C, at upang maiwasan din ang pagbubuklod sa mga partikular na pangalan, halimbawa, kung ang pangalan ng parameter ay binalak na baguhin sa hinaharap.

    Ang flag na "/" ay umaakma sa dating idinagdag na flag na "*", na naghihiwalay sa mga variable kung saan isang pagtatalaga lamang sa form na "variable=value" ang naaangkop. Halimbawa, sa function na "def f(a, b, /, c, d, *, e, f):" ang mga variable na "a" at "b" ay maaari lamang italaga sa pagkakasunud-sunod na nakalista ang mga halaga ,
    mga variable na "e" at "f", sa pamamagitan lamang ng takdang-aralin na "variable=value", at mga variable na "c" at "d" sa alinman sa mga sumusunod na paraan:

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

  • Idinagdag bagong C API
    upang i-configure ang mga parameter ng pagsisimula ng Python, na nagbibigay-daan sa kumpletong kontrol sa lahat pagsasaayos at pagbibigay ng mga advanced na pasilidad sa paghawak ng error. Pinapadali ng iminungkahing API na i-embed ang functionality ng Python interpreter sa iba pang mga C application;

  • Ipinatupad bagong Vectorcall protocol para sa mas mabilis na pag-access sa mga bagay na nakasulat sa C language. Sa CPython 3.8, ang pag-access sa Vectorcall ay limitado pa rin sa panloob na paggamit, ang paglipat sa kategorya ng mga API na naa-access ng publiko ay pinlano sa CPython 3.9;
  • Idinagdag mga tawag sa Runtime Audit Hooks, na nagbibigay ng mga application at frameworks sa Python na may access sa mababang antas ng impormasyon tungkol sa pag-usad ng script para i-audit ang mga aksyon na ginawa (halimbawa, maaari mong subaybayan ang pag-import ng mga module, pagbubukas ng mga file, gamit ang isang bakas, pag-access sa mga socket ng network, pagpapatakbo ng code sa pamamagitan ng exec, eval at run_mod);
  • Sa modyul atsara ibinigay suporta para sa Pickle 5 protocol, na ginagamit para sa pagse-serialize at pag-deserialize ng mga bagay. Binibigyang-daan ka ng Pickle na i-optimize ang paglilipat ng malaking halaga ng data sa pagitan ng mga proseso ng Python sa mga multi-core at multi-node na configuration sa pamamagitan ng pagbabawas sa bilang ng mga operasyon ng pagkopya ng memorya at paglalapat ng karagdagang mga diskarte sa pag-optimize tulad ng paggamit ng mga algorithm ng compression na partikular sa data. Ang ikalimang bersyon ng protocol ay kapansin-pansin para sa pagdaragdag ng isang out-of-band transmission mode, kung saan ang data ay maaaring ipadala nang hiwalay mula sa pangunahing atsara stream.
  • Bilang default, ang ika-apat na bersyon ng Pickle protocol ay isinaaktibo, na kung ihahambing sa ikatlong bersyon na dating inaalok bilang default, ay nagbibigay-daan para sa mas mataas na pagganap at pagbawas sa laki ng ipinadalang data;
  • Sa modyul type Maraming mga bagong tampok ang ipinakilala:
    • klase TypedDict para sa mga nag-uugnay na array kung saan ang uri ng impormasyon ay tahasang tinukoy para sa data na nauugnay sa mga key ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Uri Literal, na nagbibigay-daan sa iyong limitahan ang isang parameter o ibalik ang halaga sa ilang paunang natukoy na mga halaga ("Literal['konektado', 'nadiskonekta']").
    • Disenyo"Pangwakas", na ginagawang posible na tukuyin ang mga halaga ng mga variable, function, pamamaraan at klase na hindi mababago o muling italaga ("pi: Final[float] = 3.1415926536").
  • Nagdagdag ng kakayahang magtalaga ng cache para sa mga pinagsama-samang file na may bytecode, na-save sa isang hiwalay na puno ng FS at nahiwalay sa mga direktoryo na may code. Ang landas para sa pag-save ng mga file na may bytecode ay itinakda sa pamamagitan ng isang variable PYTHONPYCACHEPREFIX o ang opsyon na "-X pycache_prefix";
  • Ipinatupad ang kakayahang gumawa ng mga debug build ng Python na gumagamit ng ABI na kapareho ng release, na nagbibigay-daan sa iyong mag-load ng mga extension na nakasulat sa SI language, na pinagsama-sama para sa mga stable na release, sa mga debug build;
  • Ang f-strings (mga literal na naka-format na may prefix na 'f') ay nagbibigay ng suporta para sa = operator (halimbawa, "f'{expr=}'"), na nagbibigay-daan sa iyong i-convert ang isang expression sa text para sa mas madaling pag-debug. Halimbawa:

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

  • Expression"magpatuloyΒ» pinapayagang gamitin sa loob ng isang bloke sa wakas;
  • Idinagdag ang bagong module multiprocessing.shared_memory, na nagpapahintulot sa paggamit ng mga nakabahaging bahagi ng memorya sa mga pagsasaayos ng maraming proseso;
  • Sa platform ng Windows, ang pagpapatupad ng asyncio ay inilipat upang magamit ang klase ProactorEventLoop;
  • Ang pagganap ng LOAD_GLOBAL na pagtuturo ay nadagdagan ng humigit-kumulang 40% dahil sa paggamit ng bagong object code caching mechanism.

Pinagmulan: opennet.ru

Magdagdag ng komento