Python 3.10 پروگرامنگ لینگویج کی ریلیز

ترقی کے ایک سال کے بعد، Python 3.10 پروگرامنگ زبان کی اہم ریلیز پیش کی گئی ہے۔ نئی برانچ کو ڈیڑھ سال کے لیے سپورٹ کیا جائے گا، جس کے بعد مزید ساڑھے تین سال اس کے لیے کمزوریوں کو دور کرنے کے لیے تیار کیے جائیں گے۔

اسی وقت، Python 3.11 برانچ کی الفا ٹیسٹنگ شروع ہو گئی (نئے ڈیولپمنٹ شیڈول کے مطابق، نئی برانچ پر کام پچھلی برانچ کے ریلیز سے پانچ ماہ پہلے شروع ہو جاتا ہے اور اگلی ریلیز کے وقت تک الفا ٹیسٹنگ کے مرحلے تک پہنچ جاتا ہے۔ )۔ Python 3.11 برانچ سات مہینوں کے لیے الفا ریلیز میں رہے گی، اس دوران نئی خصوصیات شامل کی جائیں گی اور کیڑے ٹھیک کیے جائیں گے۔ اس کے بعد بیٹا ورژنز کو تین ماہ تک ٹیسٹ کیا جائے گا، جس کے دوران نئے فیچرز شامل کرنے پر پابندی ہوگی اور تمام تر توجہ بگس کو ٹھیک کرنے پر دی جائے گی۔ رہائی سے پہلے آخری دو مہینوں تک، برانچ ریلیز امیدوار کے مرحلے پر ہوگی، جس پر حتمی استحکام کیا جائے گا۔

Python 3.10 میں نئے اضافے شامل ہیں:

  • پیٹرن کی مماثلت کے لیے "میچ" اور "کیس" آپریٹرز کو نافذ کیا، جو کوڈ کی پڑھنے کی اہلیت کو بہتر بناتا ہے، صوابدیدی Python اشیاء کی ملاپ کو آسان بناتا ہے، اور اعلی درجے کی جامد قسم کی جانچ کے ذریعے کوڈ کی وشوسنییتا کو بڑھاتا ہے۔ عمل درآمد اسکالا، رسٹ، اور F# میں فراہم کردہ "میچ" آپریٹر کی طرح ہے، جو "کیس" آپریٹر کی بنیاد پر بلاکس میں درج نمونوں کی فہرست کے ساتھ مخصوص اظہار کے نتیجے کا موازنہ کرتا ہے۔

    def http_error(status): میچ اسٹیٹس: کیس 400: واپسی "خراب درخواست" کیس 401

    آپ موجودہ اقدار کی بنیاد پر متغیرات کو باندھنے کے لیے اشیاء، ٹیپلز، فہرستوں اور صوابدیدی ترتیب کو کھول سکتے ہیں۔ اسے نیسٹڈ ٹیمپلیٹس کی وضاحت کرنے، ٹیمپلیٹ میں اضافی "اگر" شرائط استعمال کرنے، ماسک استعمال کرنے کی اجازت ہے ("[x, y, *Rest]")، کلید/ویلیو میپنگ (مثال کے طور پر، {"bandwidth": b، "lateency ”: l} لغت سے "بینڈ وڈتھ" اور "لیٹنسی" کی قدریں نکالنے کے لیے، ذیلی ٹیمپلیٹس نکالیں (":=" آپریٹر)، ٹیمپلیٹ میں نامزد مستقل استعمال کریں۔ کلاسوں میں، "__match__()" طریقہ استعمال کرتے ہوئے مماثل رویے کو اپنی مرضی کے مطابق بنانا ممکن ہے۔

    ڈیٹاکلاسز سے ڈیٹاکلاس درآمد کریں @dataclass کلاس پوائنٹ: x: int y: int def whereis(point): میچ پوائنٹ: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") کیس پوائنٹ(x, 0): print(f"X={x}") کیس پوائنٹ(): print("کسی اور جگہ") کیس _: پرنٹ ("ایک پوائنٹ نہیں") میچ پوائنٹ: کیس پوائنٹ(x, y) اگر x == y: print(f"Y=X at {x}") کیس پوائنٹ(x, y): پرنٹ (f"اختر پر نہیں") سرخ، سبز، نیلا = 0، 1، 2 میچ رنگ: کیس ریڈ: پرنٹ ("مجھے سرخ نظر آ رہا ہے!") کیس گرین: پرنٹ ("گھاس سبز ہے") کیس بلیو: پرنٹ ("میں بلیوز محسوس کر رہا ہوں :(")

  • اب سیاق و سباق کے مینیجرز کے مجموعہ کی تعریف کو متعدد سطروں میں تقسیم کرنے کے لیے بیان کے ساتھ قوسین کا استعمال ممکن ہے۔ گروپ میں فائنل سیاق و سباق کے مینیجر کے بعد کوما چھوڑنے کی بھی اجازت ہے: ( CtxManager1() بطور مثال 1، CtxManager2() بطور مثال 2، CtxManager3() بطور مثال 3، ): ...
  • سٹرنگ لٹریلز میں غیر بند منحنی خطوط وحدانی اور اقتباسات سے متعلق غلطیوں کے کوڈ کے مقام کی بہتر رپورٹنگ۔ مثال کے طور پر، جب کوئی غیر بند تسمہ ہوتا ہے تو، مندرجہ ذیل تعمیر میں نحوی غلطی کی اطلاع دینے کے بجائے، پوائنٹر اب افتتاحی منحنی خطوط وحدانی کو نمایاں کرتا ہے اور اشارہ کرتا ہے کہ کوئی بند ہونے والا بلاک نہیں ہے۔ فائل "example.py"، لائن 1 متوقع = {9:1، 18:2، 19:2، 27:3، 28:3، 29:3، 36:4، 37:4، ^SyntaxError: '{' کبھی بند نہیں ہوا

    اضافی خصوصی نحوی غلطی کے پیغامات شامل کیے گئے: بلاک سے پہلے اور لغات میں ":" علامت غائب، قوسین کے ساتھ ٹیپل کو الگ نہ کرنا، فہرستوں میں کوما غائب، "سوائے" اور "آخر میں" کے استعمال کے بغیر "کوشش کریں" بلاک کی وضاحت کرنا۔ موازنہ میں "" = =" کے بجائے، f-strings میں *-expressions کی وضاحت کرنا۔ اس کے علاوہ، یہ اس بات کو یقینی بناتا ہے کہ پورے مسئلہ کے اظہار کو نمایاں کیا جائے، نہ کہ صرف آغاز، اور غلط انڈینٹیشن سے وابستہ غلطیوں کے سیاق و سباق کے بارے میں مزید واضح معلومات۔ >>> def foo(): ... if lel: ... x = 2 فائل " "، لائن 3 x = 2 ^ Indentation Error: لائن 2 میں 'if' بیان کے بعد ایک انڈینٹڈ بلاک کی توقع ہے

    کسی فنکشن میں صفات اور متغیر ناموں کے ناموں میں ٹائپ کی غلطیوں کی وجہ سے، صحیح نام کے ساتھ ایک سفارش آؤٹ پٹ ہے۔ >>>collections.namedtoplo Traceback (سب سے حالیہ کال آخری): فائل « "، لائن 1، میں انتساب کی خرابی: ماڈیول 'مجموعہ' میں 'نامڈٹوپلو' کا کوئی وصف نہیں ہے۔ کیا آپ کا مطلب ہے: 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 پہلے سے تعاون یافتہ کنسٹرکٹ کے برابر ہے: ڈیف اسکوائر (نمبر: یونین[انٹ، فلوٹ]) -> یونین[انٹ، فلوٹ]: واپسی نمبر ** 2
  • Concatenate آپریٹر اور ParamSpec متغیر کو ٹائپنگ ماڈیول میں شامل کیا گیا ہے، جو آپ کو کال ایبل استعمال کرتے وقت جامد قسم کی جانچ کے لیے اضافی معلومات منتقل کرنے کی اجازت دیتا ہے۔ ٹائپنگ ماڈیول ٹائپ پروٹیکشن فنکشنز کی تشریح کرنے کے لیے ٹائپ گارڈ اور ٹائپ ایلیا کو واضح طور پر بیان کرنے کے لیے خاص قدریں بھی شامل کرتا ہے۔ StrCache: TypeAlias ​​= 'کیشے[str]' # ایک قسم کا عرف
  • zip() فنکشن ایک اختیاری "سخت" جھنڈا لاگو کرتا ہے، جو، جب بیان کیا جاتا ہے، چیک کرتا ہے کہ آیا دہرائے جانے والے دلائل ایک ہی لمبائی کے ہیں۔ >>> فہرست(زپ(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2) , ('c', 3)] >>> فہرست(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) ٹریس بیک (سب سے حالیہ کال آخری ): … ValueError: zip() argument 2 دلیل 1 سے لمبا ہے۔
  • نئے بلٹ ان فنکشنز aiter() اور anext() فنکشنز iter() اور next() میں غیر مطابقت پذیر اینالاگس کے نفاذ کے ساتھ تجویز کیے گئے ہیں۔
  • چھوٹی اشیاء کے ساتھ کام کرتے وقت str()، بائٹس() اور بائٹیرے () کنسٹرکٹرز کے کام میں 30-40 فیصد تیزی آئی ہے۔
  • رنپی ماڈیول میں درآمدی کارروائیوں کی تعداد کو کم کر دیا۔ "python3 -m module_name" کمانڈ اب درآمد شدہ ماڈیولز کو 1.4 سے 69 تک کم کرنے کی وجہ سے اوسطاً 51 گنا زیادہ تیزی سے چلتی ہے۔
  • LOAD_ATTR ہدایات انفرادی اوپکوڈز کے لیے ایک کیشنگ میکانزم کا استعمال کرتی ہے، جس نے باقاعدہ صفات کے ساتھ 36% تک اور سلاٹس کے ساتھ 44% تک کام کو تیز کرنا ممکن بنایا۔
  • "--enable-optimizations" آپشن کے ساتھ Python کی تعمیر کرتے وقت، "-fno-semantic-interposition" موڈ اب فعال ہو جاتا ہے، جو "-enable-shared" کے ساتھ تعمیر کے مقابلے میں 30% تک ترجمان کو تیز کرنے کی اجازت دیتا ہے۔ "آپشن.
  • hashlib اور ماڈیولز میں SSL OpenSSL 3.0.0 کے لیے سپورٹ شامل کی گئی اور 1.1.1 سے پرانے OpenSSL ورژنز کے لیے سپورٹ ختم کر دی گئی۔
  • پرانے پارسر کو ہٹا دیا گیا ہے، جسے پچھلی برانچ میں پی ای جی (پارسنگ ایکسپریشن گرامر) پارسر نے تبدیل کر دیا ہے۔ فارمیٹر ماڈیول کو ہٹا دیا گیا ہے۔ لوپ پیرامیٹر کو asyncio API سے ہٹا دیا گیا ہے جو پہلے فرسودہ تھے۔ Py_UNICODE_str* فنکشنز جو Py_UNICODE* سٹرنگز کو جوڑتے ہیں ہٹا دیا گیا ہے۔
  • distutils ماڈیول کو فرسودہ کر دیا گیا ہے اور اسے Python 3.12 میں ہٹانے کے لیے مقرر کیا گیا ہے۔ ڈسٹوٹلز کے بجائے، سیٹ اپ ٹولز، پیکیجنگ، پلیٹ فارم، شٹل، سب پروسیس اور sysconfig ماڈیولز استعمال کرنے کی سفارش کی جاتی ہے۔ PyUnicodeObject میں wstr ڈھانچے کو فرسودہ اور ہٹانے کے لیے مقرر کیا گیا ہے۔

ماخذ: opennet.ru

DDoS تحفظ، VPS VDS سرورز والی سائٹوں کے لیے قابل اعتماد ہوسٹنگ خریدیں۔ DDoS تحفظ، VPS VDS سرورز کے ساتھ قابل اعتماد ویب سائٹ ہوسٹنگ خریدیں۔ ProHoster