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

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

ساڳئي وقت، پٿون 3.11 برانچ جي الفا ٽيسٽنگ شروع ٿي وئي (نئين ڊولپمينٽ شيڊول جي مطابق، نئين برانچ تي ڪم پوئين برانچ جي ڇڏڻ کان پنج مهينا اڳ شروع ٿئي ٿو ۽ ايندڙ رليز جي وقت تائين الفا ٽيسٽنگ اسٽيج تي پهچي ٿو. ). Python 3.11 برانچ الفا رليز ۾ ستن مهينن لاءِ هوندي، جنهن دوران نوان فيچرز شامل ڪيا ويندا ۽ بگ درست ڪيا ويندا. ان کانپوءِ بيٽا ورزن کي ٽن مهينن تائين آزمايو ويندو، جنهن دوران نوان فيچر شامل ڪرڻ تي پابندي هوندي ۽ سمورو ڌيان بگ کي درست ڪرڻ تي ڏنو ويندو. رليز ٿيڻ کان اڳ گذريل ٻن مهينن تائين، برانچ رليز اميدوار اسٽيج تي هوندي، جنهن تي حتمي استحڪام ڪيو ويندو.

پٿون 3.10 ۾ نوان اضافو شامل آهن:

  • لاڳو ٿيل "ميچ" ۽ "ڪيس" آپريٽر نمونن جي ميلاپ لاءِ، جيڪي ڪوڊ پڙهڻ جي قابليت کي بهتر ڪن ٿا، پٿون اعتراضن جي ميلاپ کي آسان ڪن ٿا، ۽ جديد جامد قسم جي چڪاس ذريعي ڪوڊ جي اعتبار کي وڌائين ٿا. عملدرآمد گهڻو ڪري "ميچ" آپريٽر وانگر آهي جيڪو اسڪالا، رسٽ، ۽ ايف # ۾ مهيا ڪيو ويو آهي، جيڪو مخصوص اظهار جي نتيجن کي "ڪيس" آپريٽر جي بنياد تي بلاڪ ۾ ڏنل نمونن جي فهرست سان مقابلو ڪري ٿو.

    def http_error(status): ميچ اسٽيٽس: ڪيس 400: واپسي "خراب درخواست" ڪيس 401|403|404: واپسي "اجازت نه ڏني وئي" ڪيس 418: واپسي "مان هڪ چانهه آهيان" ڪيس _: واپسي "ٻيو ڪجهه"

    موجوده قدرن جي بنياد تي متغيرن کي پابند ڪرڻ لاءِ شيون، ٽوپل، لسٽون ۽ صوابديدي ترتيبن کي کولڻ ممڪن آھي. ان کي اجازت ڏني وئي آهي nested ٽيمپليٽس جي وضاحت ڪرڻ، ٽيمپليٽ ۾ اضافي ”جيڪڏهن“ حالتون استعمال ڪريو، ماسڪ استعمال ڪريو (“[x, y, *rest]”), ڪي/ويل ميپنگ (مثال طور، {“bandwidth”: b, “lateency ”: l} ڊڪشنري مان ”بينڊوڊٿ“ ۽ ”ليٽيسي“ ويلز ڪڍڻ لاءِ)، ذيلي ٽيمپليٽ (":=" آپريٽر) ڪڍڻ لاءِ، ٽيمپليٽ ۾ نالي وارا مستقل استعمال ڪريو. ڪلاسن ۾، "__match__()" طريقو استعمال ڪندي ملندڙ رويي کي ترتيب ڏيڻ ممڪن آهي.

    ڊيٽا ڪلاسز مان درآمد ڪريو dataclass @dataclass ڪلاس پوائنٽ: x: int y: int def whereis(point): ميچ پوائنٽ: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") ڪيس پوائنٽ(x، 0): پرنٽ(f"X={x}") ڪيس پوائنٽ (): پرنٽ ("ڪنھن ٻي جاءِ") ڪيس _: پرنٽ ("پوائنٽ نه آھي") ملائي پوائنٽ: ڪيس پوائنٽ (x، y) جيڪڏھن x == y: پرنٽ (f"Y=X تي {x}") ڪيس پوائنٽ (x، y): پرنٽ (f"ديگنل تي نه آھي") ڳاڙھو، سائو، نيرو = 0, 1, 2 ملندڙ رنگ: ڪيس ريڊ: پرنٽ ("مون کي ڳاڙھو نظر اچي ٿو!") ڪيس گرين: پرنٽ ("گھاس سائي آھي") ڪيس بليو: پرنٽ ("مان بلوز محسوس ڪري رھيو آھيان :(")

  • اهو هاڻي ممڪن آهي ته بيان ۾ قوس استعمال ڪرڻ لاءِ بيان ڪيل حوالن جي مينيجرز جي مجموعي جي تعريف کي ڪيترن ئي لائينن ۾ ورهائڻ لاءِ. ان کي پڻ اجازت ڏني وئي آهي ڪاما ڇڏڻ کان پوءِ گروپ ۾ آخري ڪنيڪشن مئنيجر: سان ( CtxManager1() مثال طور 1، CtxManager2() مثال طور 2، CtxManager3() مثال طور 3، ): ...
  • سڌريل رپورٽنگ ڪوڊ جي جڳه جي غلطين جي جڙيل اڻ بند ٿيل braces ۽ اسٽرنگ لٽريلز ۾ حوالن سان. مثال طور، جڏهن هڪ اڻ کليل ڪڙي آهي، هيٺ ڏنل تعمير ۾ نحو جي غلطي جي رپورٽ ڪرڻ جي بدران، پوائنٽر هاڻي افتتاحي ڪنگڻ کي نمايان ڪري ٿو ۽ اشارو ڪري ٿو ته ڪو بند ڪرڻ وارو بلاڪ ناهي. فائل "example.py"، لائين 1 متوقع = {9:1، 18:2، 19:2، 27:3، 28:3، 29:3، 36:4، 37:4، ^SyntaxError: '{' ڪڏهن به بند نه ڪيو ويو

    شامل ڪيا ويا اضافي خاص نحوي نحوي نقص پيغام: غائب ":" علامت بلاڪ کان اڳ ۽ لغتن ۾، ٽوپل کي قوس سان الڳ نه ڪرڻ، فهرستن ۾ ڪاما نه هجڻ، "ڪوشش" بلاڪ جي وضاحت ڪرڻ بغير "سواء" ۽ "آخر ۾"، استعمال ڪندي "= "جي بدران" = =" مقابلي ۾، وضاحت ڪندي *-اظهار ف-strings ۾. ان کان علاوه، اهو يقيني بڻائي ٿو ته سڄي مسئلي واري اظهار کي نمايان ڪيو ويو آهي، نه صرف شروعات، ۽ غلط انگن اکرن سان لاڳاپيل غلطين جي حوالي سان وڌيڪ واضح معلومات. >>> def foo(): ... if lel: ... x = 2 فائل " "، لڪير 3 x = 2 ^ Indentation Error: لڪير 2 ۾ 'if' بيان کان پوءِ انڊينٽ ٿيل بلاڪ جي توقع

    هڪ فنڪشن ۾ خاصيتن ۽ متغير نالن جي نالن ۾ ٽائپس جي سببن جي ڪري، صحيح نالي سان هڪ سفارش آئوٽ آهي. >>>collections.namedtoplo Traceback (سڀ کان تازو ڪال آخري): فائل « "، لائن 1، ۾ AttributeError: module 'collections' ۾ ڪا به صفت 'namedtoplo' ناهي. ڇا توھان جو مطلب آھي: nametuple؟

  • ڊيبگنگ ٽولز ۽ پروفائيلرز لاءِ، ٽريس ايونٽس مهيا ڪيا ويا آھن پر عمل ٿيل ڪوڊ جي درست لائن نمبرن سان.
  • شامل ڪيو ويو sys.flags.warn_default_encoding سيٽنگ سان لاڳاپيل امڪاني غلطين بابت خبردار ڪرڻ لاءِ TextIOWrapper ۽ open() پروسيسنگ UTF-8 انڪوڊ ٿيل فائلن کي واضح طور تي بيان ڪرڻ کان سواءِ 'encoding=»utf-8″ اختيار (ASCII انڪوڊنگ ڊفالٽ طور استعمال ڪيو ويندو آهي) . نئون رليز پڻ هڪ 'encoding="locale" قدر بيان ڪرڻ جي صلاحيت ڏئي ٿو انڪوڊنگ کي موجوده لوڪل جي بنياد تي سيٽ ڪرڻ لاءِ.
  • ٽائپنگ ماڊل ۾ هڪ نئون آپريٽر شامل ڪيو ويو آهي، جيڪو قسم جي تشريح جي وضاحت لاءِ اوزار مهيا ڪري ٿو، نحو جي استعمال جي اجازت ڏئي ٿو "X | Y" ھڪڙي قسم کي چونڊڻ لاء (X قسم يا Y قسم). def مربع (نمبر: int | float) -> int | فلوٽ: واپسي نمبر ** 2 اڳئين سپورٽ ٿيل تعمير جي برابر آھي: def اسڪوائر (نمبر: يونين[انٽ، فلوٽ]) -> يونين[انٽ، فلوٽ]: واپسي نمبر ** 2
  • Concatenate آپريٽر ۽ ParamSpec variable ٽائپنگ ماڊل ۾ شامل ڪيا ويا آھن، جيڪي توھان کي اجازت ڏين ٿا اضافي معلومات منتقل ڪرڻ لاءِ جامد قسم جي چڪاس لاءِ جڏھن ڪالبل استعمال ڪريو. ٽائپنگ ماڊل پڻ شامل ڪري ٿو خاص قدر TypeGuard کي تشريح ڪرڻ لاءِ قسم جي تحفظ جي ڪمن کي بيان ڪرڻ لاءِ ۽ TypeAlias ​​کي واضح طور تي هڪ قسم جي عرف کي بيان ڪرڻ لاءِ. StrCache: TypeAlias ​​= 'ڪيش[str]' # هڪ قسم جو عرف
  • zip() فنڪشن هڪ اختياري "سخت" پرچم لاڳو ڪري ٿو، جيڪو، جڏهن بيان ڪيو ويو آهي، چيڪ ڪري ٿو ته ڇا دليلن کي ٻيهر بيان ڪيو وڃي ٿو ساڳئي ڊيگهه آهي. >>> فهرست(zip(('a', 'b', 'c'), (1, 2, 3), strict=True) [('a', 1), ('b', 2) , ('c', 3)] >>> فهرست(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) Traceback (سڀ کان تازو ڪال آخري ): … ValueError: zip() دليل 2 دليل 1 کان ڊگهو آهي
  • نوان بلٽ ان فنڪشنز aiter() ۽ anext() تجويز ڪيا ويا آھن، فعل iter() ۽ next().
  • str()، bytes() ۽ bytearray() ٺاهيندڙن جو ڪم جڏهن ننڍين شين سان ڪم ڪري رهيو آهي ته 30-40 سيڪڙو تيز ٿي ويو آهي.
  • رنپي ماڊل ۾ درآمد جي عملن جو تعداد گھٽايو. حڪم "python3 -m module_name" ھاڻي 1.4 کان 69 تائين درآمد ٿيل ماڊلز جي گھٽتائي جي ڪري اوسط 51 ڀيرا تيز ھلندو آھي.
  • LOAD_ATTR هدايتون انفرادي اپڪوڊس لاءِ ڪيشنگ ميڪانيزم استعمال ڪري ٿي، جنهن کي 36٪ تائين، ۽ سلاٽ سان 44٪ تائين ڪم کي تيز ڪرڻ ممڪن بڻايو.
  • جڏهن پٿون کي ”--enable-optimizations“ اختيار سان ٺهيو، ته ”-fno-semantic-interposition“ موڊ هاڻي فعال ٿي ويو آهي، جيڪو ”-enable-shared“ سان تعمير ڪرڻ جي مقابلي ۾ 30 سيڪڙو تائين مترجم کي تيز ڪرڻ جي اجازت ڏئي ٿو. "اختيار.
  • hashlib ۽ ssl ماڊلز OpenSSL 3.0.0 لاءِ سپورٽ شامل ڪيا آھن ۽ 1.1.1 کان پراڻن OpenSSL ورزن کي سپورٽ ڪرڻ بند ڪري ڇڏيو آھي.
  • پراڻو parser هٽايو ويو آهي، جيڪو پوئين برانچ ۾ PEG (Parsing Expression Grammar) parser ذريعي تبديل ڪيو ويو آهي. فارميٽ ماڊل هٽايو ويو آهي. لوپ پيراميٽر کي asyncio API مان هٽايو ويو آهي. جيڪي طريقا اڳ ۾ ختم ڪيا ويا هئا انهن کي هٽايو ويو آهي. Py_UNICODE_str* فنڪشن جيڪي ٺاهيندا آهن Py_UNICODE* اسٽرنگ کي هٽايو ويو آهي.
  • Distutils module کي ختم ڪيو ويو آھي ۽ Python 3.12 ۾ ختم ڪرڻ لاءِ مقرر ٿيل آھي. distutils جي بدران، ان کي استعمال ڪرڻ جي صلاح ڏني وئي آهي سيٽ اپ اوزار، پيڪنگنگ، پليٽ فارم، شٽل، سب پروسيس ۽ sysconfig ماڊل. PyUnicodeObject ۾ wstr ساخت کي ختم ڪيو ويو آهي ۽ هٽائڻ لاءِ شيڊول ڪيو ويو آهي.

جو ذريعو: opennet.ru

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