పైథాన్ 3.11 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల

ఒక సంవత్సరం అభివృద్ధి తర్వాత, పైథాన్ 3.11 ప్రోగ్రామింగ్ భాష యొక్క ముఖ్యమైన విడుదల ప్రచురించబడింది. కొత్త బ్రాంచ్‌కు ఒకటిన్నర సంవత్సరాలు మద్దతు ఇవ్వబడుతుంది, ఆ తర్వాత మరో మూడున్నరేళ్ల పాటు, బలహీనతలను తొలగించడానికి పరిష్కారాలు రూపొందించబడతాయి.

అదే సమయంలో, పైథాన్ 3.12 శాఖ యొక్క ఆల్ఫా పరీక్ష ప్రారంభమైంది (కొత్త డెవలప్‌మెంట్ షెడ్యూల్‌కు అనుగుణంగా, కొత్త శాఖలో పని మునుపటి శాఖ విడుదలకు ఐదు నెలల ముందు ప్రారంభమవుతుంది మరియు తదుపరి విడుదల సమయానికి ఆల్ఫా పరీక్ష దశకు చేరుకుంటుంది. ) పైథాన్ 3.12 శాఖ ఏడు నెలల పాటు ఆల్ఫా విడుదలలో ఉంటుంది, ఈ సమయంలో కొత్త ఫీచర్లు జోడించబడతాయి మరియు బగ్‌లు పరిష్కరించబడతాయి. దీని తర్వాత, బీటా వెర్షన్‌లు మూడు నెలల పాటు పరీక్షించబడతాయి, ఈ సమయంలో కొత్త ఫీచర్‌లను జోడించడం నిషేధించబడుతుంది మరియు బగ్‌లను పరిష్కరించడానికి అన్ని శ్రద్ధలు చెల్లించబడతాయి. విడుదలకు ముందు చివరి రెండు నెలలు, బ్రాంచ్ విడుదల అభ్యర్థి దశలో ఉంటుంది, ఆ సమయంలో తుది స్థిరీకరణ జరుగుతుంది.

పైథాన్ 3.11కి కొత్త చేర్పులు:

  • పనితీరును ఆప్టిమైజ్ చేయడానికి ముఖ్యమైన పని జరిగింది. కొత్త బ్రాంచ్‌లో యాక్సిలరేషన్ మరియు ఫంక్షన్ కాల్‌ల ఇన్‌లైన్ డిప్లాయ్‌మెంట్, స్టాండర్డ్ ఆపరేషన్‌ల (x+x, x*x, xx, a[i], a[i] = z, f(arg) వేగవంతమైన ఇంటర్‌ప్రెటర్‌ల ఉపయోగం వంటి మార్పులు ఉన్నాయి. C(arg), o.method(), o.attr = z, *seq), అలాగే Cinder మరియు HotPy ప్రాజెక్ట్‌ల ద్వారా తయారు చేయబడిన ఆప్టిమైజేషన్‌లు. లోడ్ రకాన్ని బట్టి, కోడ్ అమలు వేగం 10-60% పెరుగుతుంది. సగటున, పైపెర్ఫార్మెన్స్ టెస్ట్ సూట్‌లో పనితీరు 25% పెరిగింది.

    బైట్‌కోడ్ కాషింగ్ మెకానిజం పునఃరూపకల్పన చేయబడింది, ఇది ఇంటర్‌ప్రెటర్ ప్రారంభ సమయాన్ని 10-15% తగ్గించింది. కోడ్ మరియు బైట్‌కోడ్‌తో ఉన్న ఆబ్జెక్ట్‌లు ఇప్పుడు ఇంటర్‌ప్రెటర్ ద్వారా స్థిరంగా కేటాయించబడ్డాయి, ఇది కాష్ నుండి సంగ్రహించబడిన బైట్‌కోడ్‌ను అన్‌మార్షల్ చేయడం మరియు డైనమిక్ మెమరీలో ఉంచడానికి కోడ్‌తో వస్తువులను మార్చడం వంటి దశలను తొలగించడం సాధ్యం చేసింది.

  • డయాగ్నొస్టిక్ సందేశాలలో కాల్ ట్రేస్‌లను ప్రదర్శిస్తున్నప్పుడు, లోపానికి కారణమైన వ్యక్తీకరణ గురించి సమాచారాన్ని ప్రదర్శించడం ఇప్పుడు సాధ్యమవుతుంది (గతంలో, లైన్‌లోని ఏ భాగం లోపానికి కారణమైందో వివరించకుండా లైన్ మాత్రమే హైలైట్ చేయబడింది). విస్తరించిన ట్రేస్ సమాచారాన్ని API ద్వారా కూడా పొందవచ్చు మరియు codeobject.co_positions() పద్ధతి లేదా C API ఫంక్షన్ PyCode_Addr2Location()ని ఉపయోగించి సోర్స్ కోడ్‌లోని నిర్దిష్ట స్థానానికి వ్యక్తిగత బైట్‌కోడ్ సూచనలను మ్యాప్ చేయడానికి ఉపయోగించవచ్చు. ఈ మార్పు సమూహ నిఘంటువు వస్తువులు, బహుళ ఫంక్షన్ కాల్‌లు మరియు సంక్లిష్ట అంకగణిత వ్యక్తీకరణలతో సమస్యలను డీబగ్ చేయడం చాలా సులభం చేస్తుంది. ట్రేస్‌బ్యాక్ (ఇటీవలి కాల్ చివరిది): ఫైల్ "calculation.py", లైన్ 54, ఫలితం = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: సున్నా ద్వారా విభజన
  • మినహాయింపు సమూహాలకు మద్దతు జోడించబడింది, ప్రోగ్రామ్‌కు ఒకేసారి అనేక విభిన్న మినహాయింపులను రూపొందించే మరియు ప్రాసెస్ చేయగల సామర్థ్యాన్ని ఇస్తుంది. బహుళ మినహాయింపులను సమూహపరచడానికి మరియు వాటిని కలిసి పెంచడానికి, కొత్త మినహాయింపు రకాలు ExceptionGroup మరియు BaseExceptionGroup ప్రతిపాదించబడ్డాయి మరియు సమూహం నుండి వ్యక్తిగత మినహాయింపులను హైలైట్ చేయడానికి “తప్ప*” వ్యక్తీకరణ జోడించబడింది.
  • add_note() పద్ధతి BaseException తరగతికి జోడించబడింది, మినహాయింపుకు టెక్స్ట్ నోట్‌ను జోడించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఉదాహరణకు, మినహాయింపు విసిరినప్పుడు అందుబాటులో లేని సందర్భోచిత సమాచారాన్ని జోడించడం.
  • ప్రస్తుత ప్రైవేట్ తరగతిని సూచించడానికి ప్రత్యేక స్వీయ రకాన్ని జోడించారు. TypeVarని ఉపయోగించడం కంటే సరళమైన మార్గంలో దాని తరగతి యొక్క ఉదాహరణను అందించే పద్ధతులను ఉల్లేఖించడానికి సెల్ఫ్ ఉపయోగించవచ్చు. తరగతి MyLock: def __enter__(self) -> Self: self.lock() స్వీయ రిటర్న్
  • LiteralString రకం (అంటే బేర్ మరియు LiteralString స్ట్రింగ్‌లు, కానీ ఏకపక్ష లేదా కంబైన్డ్ స్ట్రింగ్‌లు కాదు)కు అనుకూలంగా ఉండే స్ట్రింగ్ లిటరల్స్‌ను మాత్రమే చేర్చగల ప్రత్యేక LiteralString రకం జోడించబడింది. LiteralString రకం స్ట్రింగ్ ఆర్గ్యుమెంట్‌ల పాస్‌ను ఫంక్షన్‌లకు పరిమితం చేయడానికి, స్ట్రింగ్‌ల భాగాలను ఏకపక్ష ప్రత్యామ్నాయం చేయడంలో దుర్బలత్వాలకు దారితీయవచ్చు, ఉదాహరణకు, SQL ప్రశ్నలు లేదా షెల్ ఆదేశాల కోసం స్ట్రింగ్‌లను రూపొందించేటప్పుడు. def run_query(sql: LiteralString) -> ... ... డెఫ్ కాలర్( ఏకపక్ష_స్ట్రింగ్: str, query_string: LiteralString, table_name: LiteralString, ) -> ఏదీ కాదు: run_query("సెలక్ట్ * విద్యార్థుల నుండి") # సరే run_query(literal_string) # ok run_query( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # Error run_query( # Error f"SELECT * FROM విద్యార్థుల నుండి పేరు = {{arbitrary_string}" )
  • TypeVarTuple రకం జోడించబడింది, ఇది TypeVar వలె కాకుండా వేరియబుల్ జెనరిక్స్ యొక్క వినియోగాన్ని అనుమతిస్తుంది, ఇది ఒక రకం కాదు, కానీ ఏకపక్ష సంఖ్యలో రకాలను కవర్ చేస్తుంది.
  • ప్రామాణిక లైబ్రరీ TOML ఆకృతిని అన్వయించడం కోసం విధులు కలిగిన tomllib మాడ్యూల్‌ను కలిగి ఉంటుంది.
  • అవసరమైన మరియు ఐచ్ఛిక ఫీల్డ్‌లను గుర్తించడానికి అవసరమైన మరియు అవసరం లేని లేబుల్‌లతో టైప్ చేసిన నిఘంటువుల (TypedDict) యొక్క వ్యక్తిగత మూలకాలను గుర్తించడం సాధ్యమవుతుంది (డిఫాల్ట్‌గా, మొత్తం పరామితి తప్పుకు సెట్ చేయబడకపోతే అన్ని డిక్లేర్డ్ ఫీల్డ్‌లు అవసరం). క్లాస్ మూవీ(టైప్డ్ డిక్ట్): టైటిల్: str year: Not Required[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # సరే (సంవత్సరం ఫీల్డ్ ఐచ్ఛికం) m3: సినిమా = {“సంవత్సరం”: 2022} # లోపం, అవసరమైన టైటిల్ ఫీల్డ్ పూరించబడలేదు)
  • టాస్క్‌గ్రూప్ క్లాస్ అసమకాలిక కాంటెక్స్ట్ మేనేజర్ అమలుతో అసిన్సియో మాడ్యూల్‌కు జోడించబడింది, ఇది టాస్క్‌ల సమూహం పూర్తయ్యే వరకు వేచి ఉంది. సమూహానికి టాస్క్‌లను జోడించడం create_task() పద్ధతిని ఉపయోగించి చేయబడుతుంది. async def main(): asyncio.TaskGroup()ని tgగా సమకాలీకరించండి: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(మరో_కోరో(...)) ప్రింట్("రెండు టాస్క్‌లు ఇప్పుడు పూర్తయ్యాయి .")
  • తరగతులు, పద్ధతులు మరియు ఫంక్షన్‌ల కోసం @dataclass_transform డెకరేటర్ జోడించబడింది, పేర్కొన్నప్పుడు, స్టాటిక్ టైప్ చెకింగ్ సిస్టమ్ ఆబ్జెక్ట్‌ని @dataclasses.dataclass డెకరేటర్‌ని ఉపయోగిస్తున్నట్లుగా పరిగణిస్తుంది. దిగువ ఉదాహరణలో, కస్టమర్ మోడల్ క్లాస్, రకాలను తనిఖీ చేస్తున్నప్పుడు, @dataclasses.dataclass డెకరేటర్‌తో తరగతికి సమానంగా ప్రాసెస్ చేయబడుతుంది, అనగా. ఐడి మరియు నేమ్ వేరియబుల్స్‌ని ఆమోదించే __init__ పద్ధతిని కలిగి ఉన్నట్లు. @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str
  • సాధారణ వ్యక్తీకరణలలో, అటామిక్ గ్రూపింగ్ ((?>...)) మరియు స్వాధీన పరిమాణాలను (*+, ++, ?+, {m,n}+) ఉపయోగించగల సామర్థ్యం జోడించబడింది.
  • "-P" కమాండ్ లైన్ ఎంపిక మరియు PYTHONSAFEPATH ఎన్విరాన్మెంట్ వేరియబుల్ జోడించబడింది, sys.pathకు సురక్షితం కాని ఫైల్ పాత్‌ల యొక్క ఆటోమేటిక్ అటాచ్‌మెంట్‌ను నిలిపివేయడానికి.
  • Windows ప్లాట్‌ఫారమ్ కోసం py.exe యుటిలిటీ గణనీయంగా మెరుగుపరచబడింది, “-V:” సింటాక్స్‌కు మద్దతును జోడిస్తుంది. / "అదనంగా"- . "
  • C APIలోని చాలా మాక్రోలు రెగ్యులర్ లేదా స్టాటిక్ ఇన్‌లైన్ ఫంక్షన్‌లుగా మార్చబడతాయి.
  • uu, cgi, పైప్స్, క్రిప్ట్, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, మరియు sunau మాడ్యూల్‌లు తొలగించబడ్డాయి మరియు PYలో తీసివేయబడతాయి 3.13 విడుదల. PyUnicode_Encode* ఫంక్షన్‌లు తీసివేయబడ్డాయి.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి