پٿون 3.11 پروگرامنگ ٻولي جو رليز

ترقي جي هڪ سال کان پوء، پٿون 3.11 پروگرامنگ ٻولي جو اهم رليز شايع ڪيو ويو آهي. نئين برانچ کي اڍائي سالن لاءِ سپورٽ ڪئي ويندي، جنهن کانپوءِ ساڍا ٽي سال ان لاءِ سڌارا ٺاهيا ويندا ته جيئن ڪمزورين کي ختم ڪري سگهجي.

ساڳئي وقت، پٿون 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)، گڏو گڏ Cinder ۽ HotPy منصوبن پاران تيار ڪيل اصلاحون. لوڊ جي قسم تي مدار رکندي، 10-60٪ جي ڪوڊ جي عمل جي رفتار ۾ اضافو آهي. سراسري طور تي، pyperformance ٽيسٽ سوٽ تي ڪارڪردگي 25 سيڪڙو وڌي وئي.

    بائيٽ ڪوڊ ڪيشنگ ميڪانيزم کي ٻيهر ڊزائين ڪيو ويو آهي، جنهن کي 10-15٪ پاران مترجم جي شروعاتي وقت کي گھٽائي ڇڏيو آهي. ڪوڊ ۽ بائيٽ ڪوڊ سان گڏ شيون هاڻي مترجم طرفان مستحڪم طور تي مختص ڪيا ويا آهن، جنهن کي ڪيش مان ڪڍيل بائيٽ ڪوڊ کي غير مارشال ڪرڻ جي مرحلن کي ختم ڪرڻ ۽ متحرڪ ميموري ۾ رکيل ڪوڊ سان شيون تبديل ڪرڻ ممڪن بڻائي.

  • جڏهن تشخيصي پيغامن ۾ ڪال جي نشانين کي ڏيکاريندي، اهو هاڻي ممڪن آهي ته اظهار جي باري ۾ معلومات ڏيکاري ٿي جيڪا غلطي جو سبب بڻيل آهي (اڳي، صرف لڪير کي نمايان ڪيو ويو هو بغير تفصيل جي وضاحت ڪرڻ جي لائن جو ڪهڙو حصو غلطي جو سبب بڻيو). توسيع ٿيل سراغ معلومات API ذريعي پڻ حاصل ڪري سگھجن ٿيون ۽ استعمال ڪري سگھجن ٿيون انفرادي بائيٽ ڪوڊ جي هدايتن کي ماخذ ڪوڊ ۾ مخصوص پوزيشن لاءِ codeobject.co_positions() طريقو يا C API فنڪشن PyCode_Addr2Location(). تبديلي ان کي وڌيڪ آسان بڻائي ٿي ڊيبگ مسئلن کي nested ڊڪشنري شين، گھڻن فنڪشن ڪالن، ۽ پيچيده رياضياتي اظهار سان. Traceback (سڀ کان تازو ڪال آخري): فائل "calculation.py"، لائن 54، نتيجي ۾ = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • استثنا گروپن لاءِ سپورٽ شامل ڪئي وئي، پروگرام کي هڪ ئي وقت ۾ ڪيترن ئي مختلف استثنان کي پيدا ڪرڻ ۽ پروسيس ڪرڻ جي صلاحيت ڏني وئي. ڪيترن ئي استثنان کي گروپ ڪرڻ ۽ انهن کي گڏ ڪرڻ لاءِ، نئين استثنا جا قسم ExceptionGroup ۽ BaseExceptionGroup تجويز ڪيا ويا آهن، ۽ "سواء*" اظهار شامل ڪيو ويو آهي هڪ گروپ مان انفرادي استثنا کي اجاگر ڪرڻ لاءِ.
  • add_note() طريقو BaseException ڪلاس ۾ شامل ڪيو ويو آھي، توھان کي اجازت ڏئي ٿو ھڪڙي ٽيڪسٽ نوٽ کي استثنيٰ سان ڳنڍڻ، مثال طور، لاڳاپيل معلومات شامل ڪرڻ جيڪا دستياب ناھي جڏھن استثنا اڇلايو وڃي.
  • موجوده خانگي طبقي جي نمائندگي ڪرڻ لاءِ خاص خود قسم شامل ڪيو ويو. خود استعمال ڪري سگھجن ٿا طريقن جي تشريح ڪرڻ لاءِ جيڪي پنھنجي ڪلاس جو ھڪڙو مثال واپس آڻين ٿا TypeVar استعمال ڪرڻ کان وڌيڪ آسان طريقي سان. ڪلاس MyLock: def __enter__(self) -> Self: self.lock() خود واپسي
  • شامل ڪيو ويو ھڪڙو خاص LiteralString قسم جنھن ۾ صرف string literals شامل ٿي سگھن ٿا جيڪي LiteralString جي قسم سان مطابقت رکن ٿا (يعني، بيئر ۽ LiteralString اسٽرنگ، پر بي ترتيب يا گڏيل str strings). LiteralString قسم استعمال ڪري سگھجي ٿو اسٽرنگ دليلن کي ڪمن تائين محدود ڪرڻ لاءِ، اسٽرنگ جي حصن جي صوابديدي متبادل جنھن ۾ نقصانن جو سبب بڻجي سگھي ٿو، مثال طور، جڏھن SQL سوالن يا شيل ڪمانڊز لاءِ تار ٺاھي رھيا آھن. def run_query(sql: LiteralString) -> ... ... def ڪالر (arbitrary_string: 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 students WHERE name = {arbitrary_string}")
  • TypeVarTuple قسم شامل ڪيو ويو آھي، متغير جنريڪس جي استعمال جي اجازت ڏئي ٿو، TypeVar جي برعڪس، جيڪي ھڪڙي قسم کي ڍڪي نه سگھندا آھن، پر ھڪڙي قسم جي ھڪڙي ترتيب واري تعداد کي.
  • معياري لائبريري ۾ TOML فارميٽ کي پارس ڪرڻ لاءِ افعال سان گڏ ٽامليب ماڊل شامل آهي.
  • اهو ممڪن آهي ته ٽائپ ڪيل ڊڪشنري (TypedDict) جي انفرادي عنصرن کي گهربل ۽ غير ضروري ليبلن سان نشان لڳايو وڃي ته جيئن گهربل ۽ اختياري شعبن جو تعين ڪجي (ڊفالٽ طور، سڀ اعلانيل شعبا گهربل آهن جيڪڏهن ڪل پيراميٽر غلط تي مقرر نه ڪيو ويو آهي). ڪلاس مووي(TypedDict): عنوان: str سال: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # ٺيڪ آهي (سال جو ميدان اختياري آهي) m3: فلم = {“سال”: 2022} # غلطي، گهربل ٽائيٽل فيلڊ نه ڀريو ويو آهي)
  • TaskGroup ڪلاس asyncio module ۾ شامل ڪيو ويو آھي ھڪڙي asynchronous context مينيجر جي عمل سان جيڪو ڪمن جي ھڪڙي گروپ جي مڪمل ٿيڻ جو انتظار ڪري ٿو. ھڪڙي گروپ ۾ ڪم شامل ڪرڻ ٺاھيو ويندو آھي create_task() طريقو استعمال ڪندي. async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("ٻئي ڪم ھاڻي مڪمل ٿي چڪا آھن) ")
  • شامل ڪيو ويو @dataclass_transform decorator for classes, methods and functions, when specified, static type checking system is treat the object as if use to @dataclasses.dataclass decorator. هيٺ ڏنل مثال ۾، CustomerModel ڪلاس، جڏهن قسمن جي چڪاس ڪئي ويندي، ساڳئي طرح هڪ ڪلاس سان عمل ڪيو ويندو @dataclasses.dataclass سينگار، يعني. جيئن ته هڪ __init__ طريقو آهي جيڪو قبول ڪري ٿو id ۽ نالو متغير. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • باقاعده اظهار ۾، ايٽمي گروهه استعمال ڪرڻ جي صلاحيت (؟>...)) ۽ possessive quantifiers (*+, ++, ?+, {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 ماڊلز کي ختم ڪيو ويو آهي ۽ Phon کي ختم ڪيو ويندو. 3.13 ڇڏڻ. هٽايو ويو PyUnicode_Encode* فنڪشن.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو