Decorators
تعلّم كيفية استخدام Decorators لتعديل الدوال أو توسيعها
Decorators درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 5. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 5 دروس في المجموع.
مقدمة إلى Decorators
مقدمة إلى Decorators
تُعد Decorators ميزة قوية في Python تتيح لكم تعديل سلوك الدوال أو الأساليب. وغالبًا ما تُستخدم لإضافة وظائف إلى الدوال دون تعديل الكود الخاص بها.
في هذا الدرس، ستتعلمون ماهية Decorators، وكيفية استخدامها، وكيفية إنشاء Decorators خاصة بكم.

ما هو Decorator؟
ما هو Decorator؟
Decorator هو دالة تأخذ دالة أخرى كإدخال، وتُرجع دالة جديدة بوظائف إضافية. وغالبًا ما يُستخدم مع الصياغة @decorator_name.
# Basic example of a decorator
def decorator(func):
def wrapper():
print("Before the function call")
func()
print("After the function call")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()كيفية عمل Decorators
كيفية عمل Decorators
عند استخدام Decorator، تستبدل Python الدالة الأصلية بالدالة المغلّفة التي يُرجعها Decorator.
# How decorators work
def decorator(func):
def wrapper():
print("Wrapper called")
func()
return wrapper
@decorator
def greet():
print("Greetings!")
print(greet.__name__) # Outputs: wrapper
greet()استخدام Decorators مع المعاملات
استخدام Decorators مع المعاملات
يمكن أن تعمل Decorators مع الدوال التي تستقبل معاملات باستخدام *args و**kwargs في الدالة المغلّفة:
# Decorator for functions with arguments
def decorator(func):
def wrapper(*args, **kwargs):
print(f"Arguments: {args}, {kwargs}")
return func(*args, **kwargs)
return wrapper
@decorator
def add(a, b):
return a + b
print(add(3, 5))تسلسل عدة مزخرفات
تسلسل عدة مزخرفات
يمكنك استخدام عدة مزخرفات مع دالة واحدة. وتُطبَّق بالترتيب الذي تظهر به، من الأعلى إلى الأسفل:
# Chaining multiple decorators
def decorator1(func):
def wrapper():
print("Decorator 1")
func()
return wrapper
def decorator2(func):
def wrapper():
print("Decorator 2")
func()
return wrapper
@decorator1
@decorator2
def greet():
print("Hello!")
greet()إنشاء مزخرفات ذات معلمات
إنشاء مزخرفات ذات معلمات
تقبل المزخرفات ذات المعلمات وسائط، وتتيح وظائف أكثر مرونة:
# Parameterized decorator
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()حالات الاستخدام الشائعة للمزخرفات
حالات الاستخدام الشائعة للمزخرفات
تُستخدم المزخرفات عادةً في:
- تسجيل استدعاءات الدوال ووسائطها.
- قياس زمن تنفيذ الدوال.
- التحكم في الوصول، مثل التحقق من أذونات المستخدمين.
- تخزين النتائج مؤقتًا لتحسين الأداء.
المزخرفات المضمنة في Python
المزخرفات المضمنة في Python
توفر Python بعض المزخرفات المضمنة، ومنها:
@staticmethod: يعرّف طريقة ثابتة.@classmethod: يعرّف طريقة صنف.@property: يعرّف خاصية.
الأخطاء الشائعة في استخدام المزخرفات
الأخطاء الشائعة في استخدام المزخرفات
إليك بعض الأخطاء التي ينبغي تجنبها:
- عدم الحفاظ على اسم الدالة الأصلية وسلسلة توثيقها (استخدم
functools.wraps). - استخدام المزخرفات دون داعٍ للمهام البسيطة.
- نسيان معالجة الوسائط في الدالة المُغلِّفة.
ما الذي تعلمناه؟
ما الذي تعلمناه؟
في هذا الدرس، تعلمت:
- ما المزخرفات وكيف تعمل في Python.
- كيفية إنشاء المزخرفات الأساسية وذات المعلمات والمتسلسلة واستخدامها.
- حالات الاستخدام الشائعة والمزخرفات المضمنة في Python.
أحسنتم! لننتقل إلى الموضوع التالي.

الأسئلة الشائعة
هل درس «Decorators» مجاني؟
نعم — نص درس «Decorators» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 5 دروس في المجموع.
ماذا ستتعلم في «Decorators»؟
تعلّم كيفية استخدام Decorators لتعديل الدوال أو توسيعها تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 5.
كم من الوقت يستغرق درس «Decorators»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Decorators
- المولّدات
- مديرو السياق (عبارات with)
- الاستيعابات (القوائم والمجموعات والقواميس)
- المُكرّرات والقابلة للتكرار