د Python 3.11 پروګرام کولو ژبه خپرول

د یو کال پراختیا وروسته، د Python 3.11 پروګرام کولو ژبې د پام وړ خوشې کول خپاره شوي. نوې څانګه به د یو نیم کال لپاره ملاتړ کوي او وروسته به د نورو درې نیمو کلونو لپاره د زیانونو د له منځه وړلو لپاره اصلاحات رامینځته کړي.

په ورته وخت کې ، د Python 3.12 څانګې الفا ټیسټ پیل شو (د نوي پراختیایی مهالویش سره سم ، په نوې څانګه کې کار د پخوانۍ څانګې خوشې کیدو څخه پنځه میاشتې دمخه پیل کیږي او د راتلونکي خوشې کیدو په وخت کې د الفا ازموینې مرحلې ته رسي. ). د Python 3.12 څانګه به د اوو میاشتو لپاره په الفا ریلیز کې وي، چې په ترڅ کې به یې نوې بڼې اضافه شي او بګونه به حل شي. له دې وروسته به د بیټا نسخې درې میاشتې ازمویل شي، چې په ترڅ کې به یې د نویو فیچرونو اضافه کول منع وي او ټول پام به د بګونو اصلاح ته ورکول کیږي. د خوشې کیدو څخه دمخه د تیرو دوه میاشتو لپاره، څانګه به د خوشې کیدو امیدوار مرحله کې وي، په کوم کې چې وروستی ثبات به ترسره شي.

په پایتون 3.11 کې نوي اضافه کول شامل دي:

  • د فعالیت د ښه کولو لپاره د پام وړ کار ترسره شوی. په نوې څانګه کې د فنکشن کالونو د سرعت او انلاین پلي کولو پورې اړوند بدلونونه شامل دي، د معیاري عملیاتو ګړندۍ ترجمانانو کارول (x+x, x*x, xx, a[i], a[i] = z, f(arg) C(arg)، o.method()، o.attr = z، *seq)، او همدارنګه د سنډر او HotPy پروژو لخوا چمتو شوي اصلاحونه. د بار ډول پورې اړه لري، د کوډ اجرا کولو سرعت کې د 10-60٪ زیاتوالی شتون لري. په اوسط ډول، د pyperformance ټیسټ سوټ فعالیت 25٪ ډیر شوی.

    د بایټ کوډ کیچ کولو میکانیزم بیا ډیزاین شوی ، کوم چې د ژباړونکي پیل وخت 10-15٪ کم کړی. د کوډ او بایټ کوډ سره شیان اوس د ژباړونکي لخوا په مستقل ډول تخصیص شوي ، کوم چې دا امکان رامینځته کړی چې له کیچ څخه ایستل شوي د غیر مارشیل بایټ کوډ مرحلې له مینځه ویسي او د کوډ سره توکي بدل کړي ترڅو په متحرک حافظه کې ځای په ځای شي.

  • کله چې په تشخیصي پیغامونو کې د زنګ نښې ښکاره کول ، اوس دا امکان لري چې د بیان په اړه معلومات وښیې چې د خطا لامل کیږي (پخوا یوازې کرښه روښانه شوې وه پرته لدې چې د کرښې کومه برخه د خطا لامل شوې). پراخ شوي ټریس معلومات د API له لارې هم ترلاسه کیدی شي او د codeobject.co_positions() میتود یا C API فنکشن PyCode_Addr2Location() په کارولو سره د سرچینې کوډ کې ځانګړي موقعیت ته د انفرادي بایټکوډ لارښوونې نقشه کولو لپاره کارول کیږي. بدلون دا خورا اسانه کوي چې د نیسټ شوي قاموس څیزونو ، ډیری فنکشن کالونو ، او پیچلي ریاضي څرګندونو سره ستونزې حل کړي. Traceback (وروستی وروستی کال): فایل "calculation.py"، 54 کرښه، په پایله کې = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • د استثنایی ډلو لپاره ملاتړ اضافه شوی ، برنامه ته دا وړتیا ورکوي چې په یوځل کې ډیری مختلف استثناوې رامینځته او پروسس کړي. د څو استثناییاتو ګروپ کولو او دوی سره یوځای کولو لپاره، د استثنایي ډولونو نوي ډولونه ExceptionGroup او BaseExceptionGroup وړاندیز شوي، او د "استثنا*" بیان اضافه شوی ترڅو د ګروپ څخه انفرادي استثناوې روښانه کړي.
  • د add_note() میتود د BaseException ټولګي کې اضافه شوی، تاسو ته اجازه درکوي چې د استثنا سره د متن نوټ ضمیمه کړئ، د بیلګې په توګه، د متنی معلوماتو اضافه کول چې شتون نلري کله چې استثناء غورځول کیږي.
  • د اوسني خصوصي ټولګي نمایندګۍ لپاره د ځان ځانګړی ډول اضافه شوی. Self د میتودونو تشریح کولو لپاره کارول کیدی شي چې د TypeVar کارولو په پرتله په ساده ډول د دې ټولګي مثال بیرته راولي. ټولګي MyLock: def __enter__(self) -> Self: self.lock() بیرته خپل ځان
  • یو ځانګړی LiteralString ډول اضافه شوی چې یوازې د سټرینګ لیکونه پکې شامل کیدی شي چې د LiteralString ډول سره مطابقت لري (د مثال په توګه، bare او LiteralString strings، مګر په خپله خوښه یا ګډ str تارونه ندي). د LiteralString ډول کارول کیدی شي د سټینګ دلیلونو تیریدو محدودیتونو ته محدود کړي، د تارونو د برخو په خپل سري بدیل چې کولی شي د زیانونو لامل شي، د بیلګې په توګه، کله چې د SQL پوښتنو یا شیل کمانډونو لپاره تارونه تولیدوي. def run_query(sql: LiteralString) -> ... ... def کالر( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> هیڅ نه: run_query ("د زده کونکو څخه غوره کړئ") # ښه چلول_پوښتنه (لټرل_سټرینګ) # ok run_query( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # Error run_query (# Error f"SELECT * د زده کونکو څخه چیرته نوم = {arbitrary_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(): async with asyncio.TaskGroup() لکه tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) چاپ("دواړه کارونه اوس بشپړ شوي دي .")
  • د ټولګیو، میتودونو او دندو لپاره د @dataclass_transform ډیکوریټر اضافه شوی، کله چې مشخص شي، د جامد ډول چک کولو سیسټم د اعتراض سره داسې چلند کوي لکه څنګه چې د @dataclasses.dataclass ډیکورټر کاروي. په لاندې مثال کې، د CustomerModel ټولګي، کله چې ډولونه چک کوي، د @dataclasses.dataclass ډیکورټر سره به د ټولګي په څیر پروسس شي، د بیلګې په توګه. لکه څنګه چې د __init__ میتود لري چې د ID او نوم متغیرونه مني. @dataclass_transform() ټولګي موډل بیس: ... ټولګي CustomerModel(ModelBase): id: int name: str
  • په منظم بیانونو کې، د اټومي ګروپ کولو وړتیا ((؟>...)) او د ملکیت اندازه کونکي (*+, ++,?+, {m,n}+) اضافه شوي.
  • د "-P" کمانډ لاین اختیار او د PYTHONSAFEPATH چاپیریال تغیرات اضافه شوي ترڅو sys.path ته د احتمالي غیر خوندي فایل لارو اتومات ضمیمه غیر فعال کړي.
  • د وینډوز پلیټ فارم لپاره د py.exe افادیت د پام وړ ښه شوی ، د "-V:" ترکیب لپاره ملاتړ اضافه کوي. / " سربیره پردې "- . "
  • په C API کې ډیری میکرو په منظم یا جامد انلاین افعال کې بدل شوي.
  • uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev او sunau ماډلونه به بې برخې شوي وي 3.13 خوشې کول. د PyUnicode_Encode* افعال لرې کړل.

سرچینه: opennet.ru

Add a comment