ميزات جديدة من بيثون 3.8 وحان الوقت للترقية إلى بيثون 2

لقد حان عام 2020 ، مما يعني أن بيثون 2 لم يعد مدعومًا . للتأكد من دقته ، توقف المطورون الرئيسيون بالفعل عن العمل في الفرع ، وسيعد إصدار الإصدار 2.7.18 ، المخصص لـ PyCon US في أبريل 2020 ، بمثابة وقف كامل لأي نشاط متعلق ببيثون 2.


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


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


حسنًا ، لتسهيل اتخاذ القرار ، فيما يلي نظرة عامة على الابتكارات الرئيسية لبرنامج Python 3.8 ، والتي ستكون مفيدة لكل عازف بيثون.


1. تعبيرات التعيين


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


a = 6 #    b  a ** 2 #  ,  b > 0 if (b := a ** 2) > 0: print(f' {a}  {b}.') #  6  36. 

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


 #     a = 5 d = [b := a+1, a := b-1, a := a*2] 

2. فقط الحجج الموضعية


يمكن أن تأخذ الوظائف نوعين من الوسائط.


  • الموقف - تنتقل عن طريق الموقف
  • اسمه - مرت بالاسم

في الكود أدناه ، يمكن تمرير قيم كلا الوسيطتين a و b حسب الموضع والاسم.


 def my_func(a, b=1): return a+b my_func(5,2) #    my_func(a=5, b=2) #    

في الإصدار الجديد من Python ، يمكنك تحديد أي من المعلمات يمكن أن تكون موضعية فقط أو تتم تسميتها فقط باستخدام / و * الأحرف في توقيع الوظيفة (ومع ذلك ، ظهر الأخير قبل Python 3.8).


في المثال أدناه ، تكون المعلمتان الأولتان a و b موضعية فقط ، c و d يمكن أن تكونا أي ، ويجب تسمية الأخيرتين e و f .


 def my_func(a, b, /, c, d, *, e, f): return a+b+c+d+e+f my_func(1, 2, 3, 4, 5, 6) # : e, f    my_func(a=1, b=2, 3, 4, e=5, f=6) # : a, b    my_func(1, 2, c=3, 4, e=5, f=6) # returns 21 my_unc(1, 2, c=3, d=4, e=5, f=6) # returns 21 

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


3. و الخطوط 2.0


من الصعب أن أصف بالكلمات مدى سهولة وأنيق تنسيق الخطوط f التي ظهرت في Python 3.6.


من الصعب تصديق ذلك ، لكن بيثون 3.8 نجح في جعله أكثر راحة. بإضافة العلامة = بعد اسم المتغير الذي تم استبداله ، يمكنك عرض اسمه وقيمته دون تكرار الاسم.


 pi = 3 #        print(f'pi={pi}') #     print(f'{pi=}') #      

التصحيح مع الطباعة سيكون أكثر ملاءمة :)


4. الترتيب العكسي لإدخالات القاموس


يمكن الآن إجراء التكرار على القواميس في الاتجاه المعاكس باستخدام عكس () .


5. الحصول على البيانات الوصفية من وحدات أخرى


ستسمح لك الوحدة النمطية importlib.metadata الجديدة بالحصول على بيانات التعريف (على سبيل المثال ، الإصدار) من حزم الجهات الخارجية.


6. وأخيرا + الاستمرار


في السابق ، لم يكن بإمكانك استخدام عبارة المتابعة من الداخل أخيرًا بسبب صعوبة تنفيذ هذه الميزة. الآن يمكنك ذلك.


 for i in range(2): try: print(i) finally: print('.') continue print('    .') # Python <= 3.7 >> SyntaxError: 'continue' not supported inside 'finally' clause # Python 3.8 >> 0 . 1 . 

Source: https://habr.com/ru/post/ar483276/


All Articles