Python 3.11 ක්‍රමලේඛන භාෂාව නිකුත් කිරීම

වසරක සංවර්ධනයෙන් පසු, Python 3.11 ක්‍රමලේඛන භාෂාවේ සැලකිය යුතු නිකුතුවක් ප්‍රකාශයට පත් කර ඇත. නව ශාඛාව වසර එකහමාරක් සඳහා සහය දක්වනු ඇති අතර ඉන් පසුව තවත් වසර තුනහමාරක් සඳහා දුර්වලතා ඉවත් කිරීම සඳහා නිවැරදි කිරීම් ජනනය කරනු ලැබේ.

ඒ සමගම, පයිතන් 3.12 ශාඛාවේ ඇල්ෆා පරීක්ෂාව ආරම්භ විය (නව සංවර්ධන කාලසටහනට අනුව, නව ශාඛාවක වැඩ කටයුතු පෙර ශාඛාව නිකුත් කිරීමට මාස පහකට පෙර ආරම්භ වන අතර ඊළඟ නිකුතුව වන විට ඇල්ෆා පරීක්ෂණ අදියර කරා ළඟා වේ. ) Python 3.12 ශාඛාව මාස හතක් සඳහා ඇල්ෆා නිකුතුවේ පවතිනු ඇත, එම කාලය තුළ නව විශේෂාංග එකතු කර දෝෂ නිවැරදි කරනු ඇත. මෙයින් පසු, බීටා අනුවාද මාස තුනක් සඳහා පරීක්ෂා කරනු ලබන අතර, එම කාලය තුළ නව විශේෂාංග එකතු කිරීම තහනම් කර ඇති අතර දෝෂ නිවැරදි කිරීමට සියලු අවධානය යොමු කෙරේ. මුදා හැරීමට පෙර අවසන් මාස දෙක සඳහා, ශාඛාව මුදා හැරීමේ අපේක්ෂක අවධියේ පවතිනු ඇත, එහිදී අවසන් ස්ථායීකරණය සිදු කරනු ලැබේ.

Python 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% දක්වා කේත ක්රියාත්මක කිරීමේ වේගය වැඩි වීමක් දක්නට ලැබේ. සාමාන්‍යයෙන්, pyperformance test කට්ටලයේ කාර්ය සාධනය 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 භාවිතා කරනවාට වඩා සරල ආකාරයකින් එහි පන්තියේ අවස්ථාවක් ආපසු ලබා දෙන ක්‍රම විවරණ කිරීමට Self භාවිතා කළ හැක. පන්තිය MyLock: def __enter__(self) -> Self: self.lock() return self
  • LiteralString වර්ගයට (එනම්, හිස් සහ LiteralString නූල්, නමුත් අත්තනෝමතික හෝ ඒකාබද්ධ strings නොවන) සමග ගැළපෙන තන්තු වචන පමණක් ඇතුළත් කළ හැකි විශේෂ LiteralString වර්ගයක් එක් කරන ලදී. LiteralString වර්ගය තන්තු තර්ක ශ්‍රිතවලට මාරු කිරීම සීමා කිරීමට භාවිතා කළ හැක, අනාරක්‍ෂිතතා වලට තුඩු දිය හැකි තන්තු වල කොටස් අත්තනෝමතික ලෙස ආදේශ කිරීම, උදාහරණයක් ලෙස, SQL විමසුම් හෝ shell විධාන සඳහා තන්තු ජනනය කිරීමේදී. def run_query(sql: LiteralString) -> ... ... def caller( හිතුවක්කාර_string: str, query_string: LiteralString, table_name: LiteralString, ) -> කිසිවක් නැත: run_query("සිසුන් තෝරා ගන්න") # හරි run_query(literal_string) # ok run_query( "SELECT * FROM" + letteral_string) # ok run_query(අත්තනෝමතික_string) # Error run_query( # Error f"SELECT * FROM students from HHERE name = { {අත්තනෝමතික_string}" )
  • TypeVarTuple වර්ගය එකතු කර ඇති අතර, TypeVar මෙන් නොව, එක් වර්ගයක් නොව හිතුවක්කාර වර්ග ගණනාවක් ආවරණය වන පරිදි විචල්‍ය ජනක භාවිතා කිරීමට ඉඩ සලසයි.
  • සම්මත පුස්තකාලයට TOML ආකෘතිය විග්‍රහ කිරීමේ කාර්යයන් සහිත tomllib මොඩියුලය ඇතුළත් වේ.
  • අවශ්‍ය සහ විකල්ප ක්ෂේත්‍ර තීරණය කිරීම සඳහා අවශ්‍ය සහ අනවශ්‍ය ලේබල් සමඟ ටයිප් කළ ශබ්දකෝෂවල (TypedDict) තනි මූලද්‍රව්‍ය සලකුණු කළ හැකිය (පෙරනිමියෙන්, සම්පූර්ණ පරාමිතිය අසත්‍ය ලෙස සකසා නොමැති නම් සියලුම ප්‍රකාශිත ක්ෂේත්‍ර අවශ්‍ය වේ). පන්තියේ චිත්‍රපටය(TypedDict): මාතෘකාව: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # හරි (වසර ක්ෂේත්‍රය විකල්පමය) m3: චිත්‍රපටය = {“වසර”: 2022} # දෝෂයකි, අවශ්‍ය මාතෘකා ක්ෂේත්‍රය පුරවා නැත)
  • TaskGroup පන්තිය අසමමුහුර්ත සන්දර්භ කළමණාකරුවෙකු ක්‍රියාත්මක කිරීමත් සමඟ asyncio මොඩියුලයට එක් කර ඇති අතර එය කාර්යයන් සමූහයක් සම්පූර්ණ කිරීමට බලා සිටී. කණ්ඩායමකට කාර්යයන් එකතු කිරීම create_task() ක්‍රමය භාවිතයෙන් සිදු කෙරේ. async def main(): asyncio.TaskGroup() සමඟ tg ලෙස සමමුහුර්ත කරන්න: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("කාර්ය දෙකම දැන් සම්පූර්ණයි .")
  • පන්ති, ක්‍රම සහ ශ්‍රිත සඳහා @dataclass_transform decorator එක් කරන ලදී, නිශ්චිතව දක්වා ඇති විට, ස්ථිතික වර්ග පිරික්සුම් පද්ධතිය වස්තුව @dataclasses.dataclass decorator භාවිතා කරන ආකාරයට සලකයි. පහත උදාහරණයේ, CustomerModel පන්තිය, වර්ග පරීක්ෂා කිරීමේදී, @dataclasses.dataclass decorator සමඟ පන්තියකට සමානව සකසනු ලැබේ, i.e. හැඳුනුම්පත සහ නාම විචල්‍යයන් පිළිගන්නා __init__ ක්‍රමයක් ඇති ලෙස. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • නිත්‍ය ප්‍රකාශනවලදී, පරමාණුක සමූහකරණය ((?>...)) සහ සන්තක ප්‍රමාණකාරක (*+, ++, ?+, {m,n}+) භාවිතා කිරීමේ හැකියාව එක් කර ඇත.
  • sys.path වෙත අනාරක්ෂිත ගොනු මාර්ග ස්වයංක්‍රීයව ඇමිණීම අක්‍රිය කිරීමට "-P" විධාන රේඛා විකල්පය සහ PYTHONSAFEPATH පරිසර විචල්‍යය එක් කරන ලදී.
  • "-V:" වාක්‍ය ඛණ්ඩය සඳහා සහය එක් කරමින් Windows වේදිකාව සඳහා py.exe උපයෝගීතාව සැලකිය යුතු ලෙස වැඩිදියුණු කර ඇත. / " අතිරේකව "- . "
  • C API හි බොහෝ මැක්‍රෝ සාමාන්‍ය හෝ ස්ථිතික පේළිගත ශ්‍රිත බවට පරිවර්තනය වේ.
  • uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, සහ sunau මොඩියුලයන් Page 3.13 ට ඉවත් කර ඇත. XNUMX නිකුත් කිරීම. PyUnicode_Encode* ශ්‍රිත ඉවත් කරන ලදී.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න