ثلاث ميزات نادرة في Python 3 يجب أن يعرفها الجميع



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



هذه المقالة هي ترجمة لثلاث ميزات مهملة في Python 3 والتي يجب على الجميع استخدامها .



التعداد



لقد استخدمت التعدادات كثيرًا في Java و Swift. أستمر في استخدامها الآن في بايثون.



من السهل جدًا إعلان التعداد في بايثون وكان ذلك ممكنًا قبل الإصدار الثالث (وإن كان مع قيود):



from enum import Enum

class State(Enum):
  AIR = 0
  LAND = 1
  SEA = 2
  
myState = State.AIR

#  0
print(myState.value)
#  AIR
print(myState.name)


في الكود أعلاه ، يتم تقديم التعداد من خلال التصريح عن فئة ترث من Enum. وبعد ذلك يتم وصف جميع الحالات الضرورية ببساطة. في حالتي: AIR، LANDو SEA.



الوظيفة التي تمت إضافتها في Python 3 هي القدرة على استخدام .valueو .name. أنها تسمح لك بالحصول على الرقم والسلسلة المقابلة للتعداد.



على سبيل المثال، وإخراج القيمة State.LAND.nameستكون LAND.



تعد Enums مفيدة في التعليمات البرمجية عندما تريد بعض المعرفات النصية للثوابت. على سبيل المثال ، بدلاً من مقارنة حالة بـ 0 أو 1 ، فمن الأفضل مقارنة بـ State.MOVINGأو State.STATIONARY. يمكن أن تتغير الثوابت وإذا نظر شخص ما إلى الكود لاحقًا ، فعندئذٍ الكلمةMOVINGسيعطي فهمًا أكثر بكثير من 0. ونتيجة لذلك ، تزداد سهولة قراءة الشفرة بشكل كبير.



يمكن العثور على مزيد من المعلومات في وثائق Python 3 الرسمية على Enum .



تنسيق



تمت إضافته في الإصدار 3.6 ، fstringsوهو أداة تنسيق نص قوية. إنها تسمح برموز أكثر قابلية للقراءة وخالية من الأخطاء (والتي أستمتع بها بعد التبديل من Java). هذا أفضل مما formatتم استخدامه سابقًا في Python. إليك مثال على الاستخدام format:



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = ",   {}       {}.".format(name, blog_title)


من السهل ملاحظة الأقواس المتعرجة الفارغة داخل السلسلة وبعد القائمة بأسماء المتغيرات بترتيب معين.



الآن دعنا نلقي نظرة على نفس الكود ، لكن استخدامه fstringأكثر قابلية للقراءة ويشبه إلى حد بعيد طريقة Swift للتنسيق.



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = f",   {name}       {blog_title}."


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



باستخدام fstringأنه يعطي أكثر قابلية للقراءة وأسهل للحفاظ على كود من استخدام الأساليب التقليدية.



فئات البيانات



يمكن أن تكون فئات البيانات موضوعًا محيرًا أكثر من السابق ، لذلك سيتطلب شرحًا أكثر بقليل. فئات البيانات هي شيء أحببته حقًا في Kotlin ، لذلك أحب استخدامها في Python أيضًا.



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



تخيل أن لديك برنامجًا تحتاج فيه إلى تمرير سلسلة ومجموعة من الأرقام بين الفئات المختلفة. يمكن أن يكون لديك عمليات مثل pass(str, arr)، ولكن من الملائم جدًا إنشاء فئة تحتوي على سلسلة ومصفوفة كعضوين فقط في الفصل.



يُظهر استخدام فئة البيانات ما تحاول القيام به بشكل أفضل ويسهل أيضًا إنشاء اختبارات الوحدة.



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



from dataclasses import dataclass

#   
@dataclass
class Vector3D:
    x: int
    y: int
    z: int
      
#  
u = Vector3D(1,1,-1)

# : Vector3D(x=1, y=1, z=-1)
print(u)


فمن السهل أن نرى هنا أن تعريف فئة البيانات هي مشابهة جدا لتعريف فئة العادية، إلا أنه يتم استخدام الديكور @dataclassوثم يتم تعريف كل حقل كما : .



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



مزيد من المعلومات حول المصمم @dataclassفي وثائق Python 3 الرسمية .



خاتمة



اسمحوا لي أن أعرف في التعليقات كيف تحب هذه الاحتمالات. سيكون من الممتع أن تسمع عن سيناريوهات جديدة لاستخدامها. ترميز سعيد!



All Articles