Python je visokonivojski interpretirani programski jezik, katerega filozofija poudarja berljivost kode.
Po letu razvoja, objavljena je nova različica programskega jezika Python 3.11, bo nova veja podprta leto in pol, nato pa se bodo še tri leta in pol oblikovali popravki z ranljivostmi.
Istočasno se je začelo alfa testiranje veje Python 3.12 (v skladu z novim urnikom razvoja se delo na novi veji začne pet mesecev pred izdajo prejšnje veje in doseže alfa testiranje do naslednje različice).
Podružnica Python 3.12 bo v izdajah alfa sedem mesecev, med katerimi bodo dodane nove funkcije in odpravljene napake. Po tem bo testiranje beta potekalo tri mesece, med katerimi bo prepovedano dodajanje novih funkcij, vsa pozornost pa bo namenjena popravkom napak. Zadnja dva meseca pred lansiranjem bo podružnica v fazi kandidatov za lansiranje, ko bo prišlo do končne stabilizacije.
Glavne nove funkcije Pythona 3.11
V tej novi različici Za optimizacijo delovanja je bilo opravljenega veliko dela, saj nova veja vključuje povezane spremembe s pospeševanjem in inline uvajanjem funkcijskih klicev, uporaba hitrih tolmačev tipičnih operacij ter optimizacije, ki sta jih pripravila projekta Cinder in HotPy. Odvisno od vrste obremenitve se hitrost izvajanja kode poveča med 10% in 60%. V povprečju se je zmogljivost pri prehodu nabora testov pyperformance povečala za 25 %.
Mehanizem predpomnjenja je bil preoblikovan bajtne kode, kar je zmanjšalo čas zagona tolmača za 10-15 %. Objekte s kodo in bajtno kodo zdaj statično dodeli tolmač, kar je omogočilo odpravo korakov razpletanja bajtne kode, pridobljene iz predpomnilnika, in pretvorbe objektov s kodo, da se jih postavi v pomnilnik kopice.
Dodano podpora skupinam izjem, ki daje programu možnost dviga in obdelave več različnih izjem hkrati. Novi vrsti izjem ExceptionGroup in BaseExceptionGroup sta predlagani za združevanje več izjem skupaj, izraz »except*« pa je dodan za ločevanje izjem iz skupine.
Dodana posebna vrsta LiteralString tako sam lahko vključuje dobesedne nize, ki so združljivi s tipom LiteralString (to je goli nizi in nizi tipa LiteralString, vendar ne poljubni ali mešani nizi tipa str). Tip LiteralString se lahko uporablja za omejevanje posredovanja nizovnih argumentov funkcijam, poljubne zamenjave delov nizov, kjer lahko povzroči ranljivosti, na primer pri generiranju nizov za poizvedbe SQL ali ukaze lupine.
Poleg tega tudi zagotovljena je možnost označevanja posameznih elementov slovarjev (TypedDict) z zastavicama Required in Not Required za določanje obveznih in neobveznih polj (privzeto so vsa deklarirana polja obvezna, če skupni parameter ni nastavljen na Lažne).
Dodan @dataclass_transform razred, metoda in dekorater funkcij, če je naveden, preverjevalnik statičnega tipa obravnava predmet, kot da uporablja dekorator @dataclasses.dataclass.
Od ostalih sprememb, ki izstopajo v tej novi različici:
- Dodana možnost uporabe atomskega združevanja ((?>…)) in ljubosumnih (posesivnih) kvantifikatorjev (*+, ++, ?+, {m,n}+) v regularnih izrazih.
- Dodan je tip TypeVarTuple, ki omogoča uporabo spremenljivih generik, za razliko od TypeVar, ki ne pokriva enega tipa, ampak poljubno število tipov.
- Standardna knjižnica vključuje modul tomllib s funkcijami za razčlenjevanje formata TOML.
- Metoda add_note() je bila dodana v razred BaseException, ki omogoča, da se izjemi pripne besedilna opomba, na primer za dodajanje kontekstualnih informacij, ki niso bile na voljo v času, ko je bila izjema vržena.
- Dodan je bil poseben tip Self, ki predstavlja trenutni zasebni razred. Self lahko uporabite za označevanje metod, ki vrnejo primerek vašega razreda na preprostejši način kot z uporabo TypeVar.
- Dodana možnost ukazne vrstice »-P« in spremenljivka okolja PYTHONSAFEPATH za onemogočanje samodejne povezave potencialno nevarnih poti datotek do sys.path.
- Pripomoček py.exe za platformo Windows je bil znatno izboljšan za podporo sintakse "-V:". / " poleg "- . ».
- Številni makri C API so bili pretvorjeni v običajne ali statične funkcije v vrstici
- Moduli uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev in sunau so opuščeni in bodo odstranjeni iz Pythona. 3.13 izdaja.
- Odstranjene funkcije PyUnicode_Encode*.
- Razred TaskGroup je bil dodan modulu asyncio z implementacijo asinhronega upravitelja konteksta, ki čaka na dokončanje skupine opravil.
- Dodajanje nalog v skupino poteka z metodo create_task().
Končno če vas zanima več o tem, podrobnosti lahko preverite v naslednjo povezavo.