Ang Python ay isang high-level na interpreted programming language na ang pilosopiya ay nagbibigay-diin sa pagiging madaling mabasa ng code nito.
Pagkatapos ng isang taon ng pag-develop, inilabas na ang bagong bersyon ng Python programming language, ang 3.11 . Ang bagong branch ay susuportahan sa loob ng isang taon at kalahati, at pagkatapos nito ay ilalabas ang mga patch sa loob ng isa pang tatlo at kalahating taon upang matugunan ang mga kahinaan.
Kasabay nito, nagsimula ang alpha testing ng Python 3.12 branch (ayon sa bagong iskedyul ng pag-develop, ang trabaho sa isang bagong branch ay magsisimula limang buwan bago ang paglabas ng nakaraang branch at umaabot sa alpha testing stage sa oras ng susunod na bersyon).
Ang sangay ng Python 3.12 ay nasa alpha release sa loob ng pitong buwan, kung saan ang mga bagong feature ay idaragdag at ang mga bug ay naayos. Pagkatapos nito, magaganap ang beta testing sa loob ng tatlong buwan, kung saan ang pagdaragdag ng mga bagong feature ay ipagbabawal at ang buong atensyon ay ibibigay sa mga pag-aayos ng bug. Ang huling dalawang buwan bago ilunsad, ang sangay ay nasa yugto ng kandidato sa paglulunsad, kung saan magaganap ang panghuling pagpapapanatag.
Pangunahing mga bagong tampok ng Python 3.11
Kasama sa bagong bersyong ito ang mahahalagang gawain upang ma-optimize ang pagganap . Isinasama ng bagong sangay ang mga pagbabagong may kaugnayan sa acceleration at inline deployment ng mga function call , ang paggamit ng mabibilis na interpreter para sa mga tipikal na operasyon, at mga optimization na binuo ng mga proyektong Cinder at HotPy. Depende sa workload, ang bilis ng pagpapatupad ng code ay tumataas sa pagitan ng 10% at 60%. Sa karaniwan, ang pagganap sa pyperformance test suite ay tumaas ng 25%.
Ang mekanismo ng bytecode caching ay muling idinisenyo , na binabawasan ang oras ng pagsisimula ng interpreter ng 10-15%. Ang mga object na naglalaman ng bytecode ay static na ngayong inilalaan ng interpreter, na nag-aalis ng mga hakbang ng pag-decode ng bytecode na nakuha mula sa cache at pag-convert ng mga object na naglalaman ng bytecode para sa dynamic na pagkakalagay sa memorya.
Naidagdag ang suporta para sa mga exception group , na nagbibigay sa programa ng kakayahang bumuo at magproseso ng maraming iba't ibang exception nang sabay-sabay. Ang mga bagong uri ng exception, ExceptionGroup at BaseExceptionGroup, ay iminungkahi para sa pagpapangkat at pagsasama-sama ng maraming exception, at ang ekspresyong "except*" ay idinagdag sa magkakahiwalay na exception sa loob ng isang grupo.
Isang espesyal na uri ng LiteralString ang naidagdag na maaari lamang magsama ng mga literal na string na tugma sa uri ng LiteralString (ibig sabihin, mga bare string at string na may uring LiteralString, ngunit hindi arbitraryo o pinagsamang mga string na may uring str). Maaaring gamitin ang uri ng LiteralString upang limitahan ang pagpasa ng mga argumento ng string sa mga function, na pumipigil sa arbitraryong pagpapalit ng mga bahagi ng mga string kung saan maaaring lumitaw ang mga kahinaan, halimbawa, kapag bumubuo ng mga string para sa mga SQL query o mga utos ng shell.
Bilang karagdagan, ang kakayahang markahan ang mga indibidwal na elemento ng mga naka-type na diksyonaryo (TypedDict) gamit ang mga markang Kinakailangan at Hindi Kinakailangan ay ibinibigay din upang matukoy ang mga mandatory at opsyonal na patlang (bilang default, lahat ng idineklarang patlang ay mandatory kung ang kabuuang parameter ay hindi nakatakda sa Mali).
Idinagdag ang class, method, at function decorator na @dataclass_transform ; kapag tinukoy, tinatrato ng static type checker ang object na parang ginamit nito ang decorator na @dataclasses.dataclass.
Sa iba pang mga pagbabago na tumatayo sa bagong bersyon na ito:
- Nagdagdag ng kakayahang gumamit ng atomic grouping ((?>…)) at seloso (possessive) quantifiers (*+, ++, ?+, {m,n}+) sa mga regular na expression.
- Ang uri ng TypeVarTuple ay naidagdag, na nagbibigay-daan sa paggamit ng mga variable na generic, hindi katulad ng TypeVar, na sumasaklaw sa hindi isang uri, ngunit isang arbitrary na bilang ng mga uri.
- Kasama sa karaniwang library ang tomllib module na may mga function para i-parse ang TOML format.
- Ang paraan ng add_note() ay idinagdag sa klase ng BaseException, na nagbibigay-daan sa isang tala ng teksto na ilakip sa pagbubukod, halimbawa upang magdagdag ng impormasyon sa konteksto na hindi magagamit sa oras na itinapon ang pagbubukod.
- Ang isang espesyal na uri ng Sarili ay idinagdag upang kumatawan sa kasalukuyang pribadong klase. Maaaring gamitin ang sarili upang i-annotate ang mga pamamaraan na nagbabalik ng isang instance ng iyong klase sa mas simpleng paraan kaysa sa paggamit ng TypeVar.
- Idinagdag ang "-P" na command line na opsyon at PYTHONSAFEPATH environment variable upang hindi paganahin ang awtomatikong koneksyon ng mga potensyal na hindi ligtas na mga path ng file sa sys.path.
- Ang py.exe utility para sa Windows platform ay makabuluhang pinahusay upang suportahan ang "-V:" syntax. / " karagdagan sa "- . ».
- Maraming C API macro ang na-convert sa mga regular o static na inline na function
- Ang uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, at sunau module ay hindi na ginagamit at aalisin sa Python. 3.13 release.
- Inalis ang mga function ng PyUnicode_Encode*.
- Ang klase ng TaskGroup ay idinagdag sa asyncio module na may pagpapatupad ng isang asynchronous na tagapamahala ng konteksto na naghihintay na makumpleto ang pangkat ng gawain.
- Ang pagdaragdag ng mga gawain sa isang pangkat ay ginagawa gamit ang paraan ng create_task().
Panghuli, kung interesado kang matuto nang higit pa tungkol dito , makikita mo ang mga detalye sa sumusunod na link.