0Pricing
Python Academy · درس

Decorators

تعلّم كيفية استخدام Decorators لتعديل الدوال أو توسيعها

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

مقدمة إلى Decorators

مقدمة إلى Decorators

تُعد Decorators ميزة قوية في Python تتيح لكم تعديل سلوك الدوال أو الأساليب. وغالبًا ما تُستخدم لإضافة وظائف إلى الدوال دون تعديل الكود الخاص بها.

في هذا الدرس، ستتعلمون ماهية Decorators، وكيفية استخدامها، وكيفية إنشاء Decorators خاصة بكم.

Decorators — رسم توضيحي 1

ما هو 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 — رسم توضيحي 11

الأسئلة الشائعة

هل درس «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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Decorators
  2. المولّدات
  3. مديرو السياق (عبارات with)
  4. الاستيعابات (القوائم والمجموعات والقواميس)
  5. المُكرّرات والقابلة للتكرار
← العودة إلى Python Academy