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

ما هو 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
عند استخدام 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 العمل مع الدوال التي تتلقى وسائط، وذلك باستخدام *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))تسلسل عدة Decorators
يمكنك استخدام عدة Decorators مع دالة واحدة. ويجري تطبيقها بالترتيب الذي تظهر به، من الأعلى إلى الأسفل:
# 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()إنشاء Decorators ذات معاملات
تأخذ Decorators ذات المعاملات وسائط وتتيح وظائف أكثر مرونة:
# 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()حالات الاستخدام الشائعة لـ Decorators
تُستخدم Decorators عادةً في ما يلي:
- تسجيل استدعاءات الدوال والوسائط الخاصة بها.
- قياس وقت تنفيذ الدوال.
- التحكم في الوصول، مثل التحقق من أذونات المستخدم.
- تخزين النتائج مؤقتًا لتحسين الأداء.
Decorators المضمّنة في Python
توفر Python بعض Decorators المضمّنة، ومنها:
@staticmethod: يعرّف دالة ثابتة.@classmethod: يعرّف دالة صنفية.@property: يعرّف دالة خاصية.
الأخطاء الشائعة عند استخدام Decorators
إليك بعض الأخطاء التي ينبغي تجنبها:
- عدم الحفاظ على اسم الدالة الأصلية وسلسلة توثيقها (استخدم
functools.wraps). - استخدام Decorators دون حاجة في المهام البسيطة.
- نسيان التعامل مع الوسائط في دالة التغليف.
ماذا تعلّمنا؟
في هذا الدرس، تعلمت ما يلي:
- ما هي decorators وكيف تعمل في Python.
- كيفية إنشاء decorators أساسية ومعلّمة بالمعاملات ومترابطة واستخدامها.
- حالات الاستخدام الشائعة وdecorators المضمّنة في Python.
أحسنت! لننتقل إلى الموضوع التالي.

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