تعد مطابقة الأنماط الهيكلية ميزة قوية في Python تتيح لك اتخاذ القرارات بناءً على بنية البيانات المعقدة واستخراج القيم المطلوبة منها. إنه يوفر طريقة موجزة وتصريحية للتعبير عن المنطق الشرطي ويمكن أن يحسن بشكل كبير إمكانية قراءة التعليمات البرمجية وقابلية صيانتها. في هذه المقالة، سنستكشف بعض الأمثلة الحقيقية لدراسات الحالة لاستخدام مطابقة الأنماط الهيكلية في بايثون.
1. تحليل استجابات واجهة برمجة التطبيقات
إحدى حالات الاستخدام الشائعة لمطابقة الأنماط الهيكلية هي تحليل استجابات واجهة برمجة التطبيقات (API). تخيل أنك تعمل مع واجهة برمجة تطبيقات للطقس تقوم بإرجاع البيانات بالتنسيق التالي:
{ "current_weather": { "location": "New York", "temperature": 25, "conditions": "Sunny" } }
لاستخراج درجة الحرارة من هذه الاستجابة، يمكنك استخدام مطابقة النمط الهيكلي على النحو التالي:
response = { "current_weather": { "location": "New York", "temperature": 25, "conditions": "Sunny" } } match response: case {"current_weather": {"temperature": temp}}: print(f"The current temperature in {response['current_weather']['location']} is {temp} degrees Celsius.") case _: print("Invalid response.")
يطابق هذا النمط أي قاموس بمفتاح "current_weather"، وضمن هذا المفتاح، يطابق قيمة "درجة الحرارة" ويستخرجها كمتغير درجة الحرارة. يتيح لك ذلك الوصول بسهولة إلى البيانات المطلوبة دون الحاجة إلى كتابة عبارات if متعددة للتحقق من وجود المفاتيح.
2. معالجة البيانات
يمكن أن تكون مطابقة الأنماط الهيكلية مفيدة أيضًا عند العمل مع مجموعات البيانات الكبيرة. تخيل أن لديك مجموعة بيانات تحتوي على معلومات حول منتجات مختلفة، بما في ذلك اسمها وفئتها وسعرها. تريد تصفية مجموعة البيانات لتشمل فقط المنتجات التي تقل عن حد سعر معين. يمكنك استخدام مطابقة الأنماط لاستخراج البيانات المطلوبة وتصفيتها كما يلي:
products = [ {"name": "Smartphone", "category": "Electronics", "price": 500}, {"name": "T-shirt", "category": "Clothing", "price": 20}, {"name": "Headphones", "category": "Electronics", "price": 100}, {"name": "Jeans", "category": "Clothing", "price": 50}, ] match products: case [{"category": "Electronics", "price": price} for price in range(200)] as electronics: print([product["name"] for product in electronics]) case [{"category": "Clothing", "price": price} for price in range(40)] as clothing: print([product["name"] for product in clothing]) case _: print("No products found.")
في هذا المثال، تتطابق الأنماط وتستخرج القيم بناءً على قيود الفئة والسعر. وهذا يسمح باتباع نهج أكثر إيجازًا وقابلية للقراءة لتصفية مجموعة البيانات.
3. التحقق من صحة إدخال المستخدم
يمكن أن تكون مطابقة الأنماط الهيكلية مفيدة أيضًا للتحقق من صحة مدخلات المستخدم. تخيل أنك تقوم بإنشاء نموذج اشتراك لموقع ويب، وتريد التأكد من أن البريد الإلكتروني للمستخدم بالتنسيق الصحيح وأن كلمة المرور الخاصة به تلبي متطلبات معينة. يمكنك استخدام مطابقة الأنماط لإجراء عمليات التحقق من الصحة هذه كما يلي:
import re email = "[email protected]" password = "12345" match email: case _ if not re.match(r"^\w @[a-zA-Z_] ?\.[a-zA-Z]{2,3}$", email): print("Invalid email format.") case _ if len(password)يطابق هذا النمط تنسيق البريد الإلكتروني ويتحقق من صحته باستخدام تعبير عادي، وطول كلمة المرور باستخدام التحقق من الطول. يمكن توسيع هذا النهج بسهولة ليشمل عمليات التحقق الإضافية حسب الحاجة.
4. وظائف التوزيع الديناميكي
حالة استخدام أخرى مثيرة للاهتمام لمطابقة الأنماط الهيكلية هي إرسال الوظائف ديناميكيًا بناءً على معلمات الإدخال. تخيل أنك تعمل مع برنامج آلة حاسبة حيث يمكن للمستخدم إدخال عملية ورقمين، وسيقوم البرنامج بإجراء العملية الحسابية لهم. يمكنك استخدام مطابقة النمط لتنفيذ الوظيفة الصحيحة بناءً على العملية المحددة كما يلي:
from operator import add, sub, mul, truediv as div def calculate(operator, num1, num2): match operator: case " ": return add(num1, num2) case "-": return sub(num1, num2) case "*": return mul(num1, num2) case "/": return div(num1, num2) case _: print("Invalid operation.") result = calculate("*", 5, 3) print(f"The result is: {result}") # Output: The result is: 15يطابق هذا النمط العامل المحدد وينفذ الوظيفة المقابلة من وحدة المشغل. يوفر هذا أسلوبًا مدمجًا وقابل للتوسيع للتعامل مع العمليات المختلفة دون الحاجة إلى كتابة عبارات if متعددة.
خاتمة
تعد مطابقة الأنماط الهيكلية ميزة قوية في Python تسمح بأكواد موجزة وتعريفية وانتقائية. ويمكن استخدامه في مجموعة متنوعة من السيناريوهات، بدءًا من تحليل استجابات واجهة برمجة التطبيقات (API) وحتى التحقق من صحة إدخال المستخدم وإرسال الوظائف ديناميكيًا. من خلال الاستفادة من الأنماط الهيكلية، يمكنك تحسين سهولة القراءة وقابلية الصيانة للتعليمات البرمجية الخاصة بك وجعل المنطق المعقد أكثر قابلية للإدارة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3