ماهي المميزات والتغييرات في بايثون 3.10

ماهي المميزات والتغييرات في Python 3.10 ؟

جميع الميزات والتغييرات المهمة في Python 3.10:

يقترب إصدار “Python 3.10” ، لذا حان الوقت لإلقاء نظرة على أهم الميزات الجديدة والتغييرات التي سيحدثها

إنه ذلك الوقت من العام مرة أخرى عندما بدأ إصدار Python alpha الأخير وكان الإصدار التجريبي الأول في طريقه ، لذا فقد حان الوقت لأخذ نسخة جديدة من Python في رحلة ومعرفة الميزات الجديدة الرائعة القادمة – هذه المرة – في “Python 3.10!”

تثبيت إصدار ألفا / بيتا :

إذا كنت ترغب في تجربة جميع ميزات أحدث وأكبر إصدار من Python ، فستحتاج إلى تثبيت إصدار Alpha / Beta. ومع ذلك ، نظرًا لأن هذا ليس إصدارًا مستقرًا بعد ، لا نريد استبدال تثبيت Python الافتراضي به. لذلك ، لتثبيت “Python 3.10″ جنبًا إلى جنب مع مترجمنا الحالي ، يمكننا استخدام ما يلي:

بعد تشغيل الكود أعلاه ، سيتم الترحيب بك بواسطة Python 3.10″ Alpha IDLE”:

مع تثبيت Python 3.10 ، يمكننا إلقاء نظرة على جميع الميزات والتغييرات الجديدة …

اكتب التحقق من التحسينات:

إذا كنت تستخدم التحقق من الكتابة في Python ، فسوف يسعدك أن تسمع أن “Python 3.10” ستتضمن الكثير من تحسينات التحقق من النوع ، بما في ذلك Type Union Operator مع بناء جملة أنظف:

علاوة على ذلك ، لا يقتصر هذا التحسين البسيط على كتابة التعليقات التوضيحية فحسب ، بل يمكن استخدامه أيضًا مع وظائف() isinstance  و () issubclass :

اكتب تغيير بناء الجملة الأسماء المستعارة:

في الإصدارات السابقة من Python ، تمت إضافة الأسماء المستعارة للسماح لنا بإنشاء أسماء مستعارة تمثل أنواعًا معرّفة من قِبل المستخدم. في Python 3.9 أو أقدم ، يمكن القيام بذلك على النحو التالي:

هنا FileName هو اسم مستعار لنوع سلسلة Python الأساسي. بدءًا من Python 3.10 ، ستتغير بنية تحديد الأسماء المستعارة للنوع إلى ما يلي:

سيسهل هذا التغيير البسيط على المبرمجين ومدققي الكتابة التمييز بين تعيين المتغير العادي والاسم المستعار للنوع. هذا التغيير متوافق أيضًا مع الإصدارات السابقة ، لذلك لا يتعين عليك تحديث أي من التعليمات البرمجية الحالية التي تستخدم الأسماء المستعارة للنوع.

بصرف النظر عن هذين التغييرين ، هناك أيضًا تحسينات أخرى على وحدة الكتابة – وهي متغيرات مواصفات المعلمة في PEP 612. ومع ذلك ، فهذه ليست شيئًا قد تجده في معظم قواعد أكواد Python حيث يتم استخدامها لإعادة توجيه أنواع المعلمات لواحد يمكن الاستدعاء إليه يمكن استدعاء آخر (على سبيل المثال في الديكور). في حال كان لديك حالة استخدام لمثل هذا الشيء ، فانتقل إلى PEP المذكور أعلاه.

عدد السكان:

بدءًا من Python 3.10 ، يمكنك استخدام int.bit_count () لحساب عدد البتات (عدد واحد) في التمثيل الثنائي لعدد صحيح. يُعرف هذا أيضًا باسم عدد السكان (popcount):

هذا أمر رائع بالتأكيد ، ولكن لنكن واقعيين ، فإن تنفيذ هذه الوظيفة ليس صعبًا تمامًا ، إنها حقًا مجرد سطر واحد من التعليمات البرمجية:

مع ذلك ، إنها وظيفة أخرى مناسبة قد تكون مفيدة في وقت ما وهذه الأنواع من الميزات الصغيرة المفيدة هي أحد الأسباب التي تجعل بايثون شائعة جدًا – يبدو أن كل شيء متاح خارج الصندوق.

يتم اهمال Distutils :

مع الإصدار الجديد ، لا تتم إضافة الأشياء فقط ، ولكن أيضًا يتم إهمالها / إزالتها. هذا هو الحال بالنسبة لحزمة distutils ، التي تم إهمالها في 3.10 وستتم إزالتها في 3.12. تم استبدال هذه الحزمة بأدوات setuptools والتعبئة والتغليف لفترة من الوقت الآن ، لذلك إذا كنت تستخدم أيًا من هذه ، فيجب أن تكون على ما يرام. مع ذلك ، يجب عليك على الأرجح التحقق من الكود الخاص بك لاستخدامات التوزيعات والبدء في الاستعداد للتخلص منها في وقت ما قريبًا.

بناء جملة مدير السياق:

يعد مديرو سياق Python رائعًا لفتح / إغلاق الملفات ، ومعالجة اتصالات قاعدة البيانات والعديد من الأشياء الأخرى ، وفي Python 3.10 ، سيتلقى بناء الجملة الخاص بهم القليل من تحسين جودة الحياة. يسمح هذا التغيير لمديري السياق المحاصرين بتوسيع أسطر متعددة ، وهو أمر مفيد إذا كنت تريد إنشاء العديد منها في جملة واحدة:

وكما ترى مما سبق ، يمكننا حتى الإشارة إلى متغير تم إنشاؤه بواسطة مدير سياق واحد (… مثل بعض الملفات) في واحد آخر يتبعه!.

هذه ليست سوى 2 من العديد من التنسيقات الجديدة المتاحة في Python 3.10. هذه البنية المحسّنة مرنة جدًا ، لذلك لن أزعج نفسي بعرض كل خيار تنسيق ممكن لأنني متأكد تمامًا من أنه مهما كان ما ستقدمه في Python 3.10 ، فمن المرجح أن يعمل فقط.

تحسينات في الأداء:

كما كان الحال مع جميع الإصدارات الأخيرة من Python ، تقدم Python 3.10 أيضًا بعض التحسينات في الأداء. أولها تحسين مُنشئات () str و () bytes و () bytearray ، والتي يجب أن تكون أسرع بنحو 30٪ (مقتطف مقتبس من مثال متتبع أخطاء Python):

من التحسينات الأخرى التي يمكن ملاحظتها (إذا كنت تستخدم التعليقات التوضيحية من النوع) أن معلمات الوظيفة والتعليقات التوضيحية الخاصة بها لم تعد تُحسب في وقت التشغيل ، بل في وقت التجميع. هذا الآن يجعل إنشاء دالة مع التعليقات التوضيحية للمعلمات أسرع بنحو مرتين.

علاوة على ذلك ، هناك المزيد من التحسينات في أجزاء مختلفة من نواة بايثون. يمكنك العثور على تفاصيل حول المشكلات التالية في متتبع أخطاء Python: bpo-41718 و bpo-42927 و bpo-43452.

نمط مطابقة :

الميزة الكبيرة التي سمعت عنها بالتأكيد هي مطابقة الأنماط الهيكلية. سيضيف هذا بيان الحالة الذي نعرفه جميعًا من لغات البرمجة الأخرى. نعلم جميعًا كيفية استخدام بيان الحالة ، ولكن بالنظر إلى أن هذه هي لغة Python – فهي ليست مجرد صيغة بسيطة للمفتاح / الحالة ، ولكنها تضيف أيضًا بعض الميزات القوية التي يجب أن نستكشفها.

وتتكون مطابقة الأنماط في أبسط أشكالها من كلمة رئيسية مطابقة متبوعة بتعبير ، ثم يتم اختبار نتيجتها مقابل الأنماط في عبارات الحالة المتتالية:

في هذا المثال البسيط ، نستخدم متغير اليوم كتعبير لدينا والذي يتم مقارنته بعد ذلك بالسلاسل الفردية في عبارات الحالة. بصرف النظر عن الحالات التي تحتوي على سلسلة حرفية ، ستلاحظ أيضًا الحالة الأخيرة التي تستخدم _ wildcard ، والتي تعادل الكلمة الأساسية الافتراضية الموجودة بلغات أخرى. يمكن حذف حالة أحرف البدل هذه ، وفي هذه الحالة قد يحدث no-op ، مما يعني بشكل أساسي أنه لا يتم إرجاع أي شيء.

شيء آخر يجب ملاحظته في الكود أعلاه هو استخدام | مما يجعل من الممكن الجمع بين عدة حرفية باستخدام | (أو) عامل التشغيل.

كما ذكرت ، لا تنتهي مطابقة النمط الجديد بالبنية الأساسية ، ولكنها تجلب بعض الميزات الإضافية ، مثل مطابقة الأنماط المعقدة:

في المقتطف أعلاه ، استخدمنا tuple كتعبير للمطابقة معه. ومع ذلك ، فإننا لا نقتصر على استخدام tuples – أي تكرارية ستعمل هنا. أيضًا ، كما ترى أعلاه ، يمكن أيضًا استخدام حرف البدل _ داخل الأنماط المعقدة وليس بمفرده كما في المثال السابق.
قد لا يكون استخدام المجموعات أو القوائم العادية هو الأسلوب الأفضل دائمًا ، لذلك إذا كنت تفضل استخدام الفئات بدلاً من ذلك ، فيمكن إعادة كتابة هذا بالطريقة التالية:

هنا يمكننا أن نرى أنه من الممكن مطابقة سمات الفئة بأنماط تشبه مُنشئ الفئة. عند استخدام هذا النهج ، يتم أيضًا تجميع السمات الفردية في المتغيرات (كما هو الحال مع المجموعات الموضحة سابقًا) ، والتي يمكننا استخدامها بعد ذلك في جسم الحالة المعنية.

أعلاه يمكننا أيضًا أن نرى بعض الميزات الأخرى لمطابقة النمط – في بيان الحالة الأولى يكون حارسًا ، وهو شرط إذا يتبع النمط. يمكن أن يكون هذا مفيدًا إذا كانت المطابقة حسب القيمة غير كافية وتحتاج إلى إضافة بعض التحقق الشرطي الإضافي. بالنظر إلى الحالات المتبقية هنا ، يمكننا أيضًا أن نرى أن كلا من الكلمات الرئيسية (على سبيل المثال ، الاسم = الاسم) والوسيطات الموضعية تعمل مع بناء الجملة الذي يشبه المُنشئ ، وينطبق الشيء نفسه أيضًا على المتغير _ (wildcard أو “الإقصاء”).

تسمح مطابقة الأنماط أيضًا باستخدام الأنماط المتداخلة. يمكن لهذه الأنماط المتداخلة استخدام أي تكرارات ، سواء مع كائنات تشبه المُنشئ أو المزيد من العناصر التكرارية بداخلها:

في هذه الأنواع من الأنماط المعقدة ، قد يكون من المفيد التقاط نمط فرعي إلى متغير لمزيد من المعالجة. يمكن القيام بذلك باستخدام كلمة رئيسية ، كما هو موضح في الحالة الثانية أعلاه.
أخيرًا ، يمكن استخدام عامل التشغيل * “لفك ضغط” المتغيرات في النمط ، وهذا أيضًا يعمل مع _ wildcard باستخدام النمط * _.
إذا كنت تريد رؤية المزيد من الأمثلة والبرامج التعليمية الكاملة ، فراجع PEP 636.

خواطر ختامية:

يوفر Python 3.10 العديد من الميزات الجديدة المثيرة للاهتمام ، ولكن نظرًا لكون هذا الإصدار ألفا (وسيصبح قريبًا تجريبيًا) ، فإنه لا يزال بعيدًا عن الاختبار الكامل وجاهز للإنتاج. لذلك ، من المؤكد أنها ليست فكرة جيدة أن تبدأ في استخدامها حتى الآن. لذلك ، من الأفضل الجلوس وانتظار الإصدار الكامل في أكتوبر وربما تحقق من صفحة ما الجديد في Python 3.10 من وقت لآخر لمعرفة أي إضافات في اللحظة الأخيرة.

مع ذلك – إذا كنت حريصًا على الترقية – فقد لا تكون فكرة سيئة الحصول على الإصدار التجريبي الأول (الذي سيأتي في وقت ما في يونيو) واختباره لمعرفة ما إذا كانت قاعدة التعليمات البرمجية الحالية متوافقة مع جميع الإصدارات الواردة التغييرات أو الإهمال أو الإزالة للوظائف / الوحدات.