الدوال المتقدمة | الجزء الثاني

الدوال المتقدمة في بايثون - الجزء الثاني

الدوال المتقدمة في بايثون - الجزء الثاني

1. المجال (Scope) في الدوال

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

  • Local: داخل الدالة فقط.
  • Enclosing: يشير إلى المجال المحيط (الدالة الخارجية عند استخدام دوال متداخلة).
  • Global: متاح في كل مكان في الكود.
  • Built-in: متاح دائمًا (مثل print وlen).
x = "global" def outer(): x = "enclosing" def inner(): x = "local" print("Inner:", x) inner() print("Outer:", x) outer() print("Global:", x)

2. الدوال التكرارية (Recursion)

الدوال التكرارية هي دوال تستدعي نفسها. تُستخدم لحل المشاكل التي يمكن تقسيمها إلى مشاكل أصغر.

def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # Output: 120

3. التزيين بالدوال (Decorators)

التزيين بالدوال هو مفهوم يسمح بتعديل سلوك دالة معينة دون تغيير الكود الخاص بها. يُستخدم لتغليف دوال أخرى.

def decorator(func): def wrapper(): print("قبل استدعاء الدالة") func() print("بعد استدعاء الدالة") return wrapper @decorator def say_hello(): print("مرحباً") say_hello()

4. الدوال العالية (Higher-Order Functions)

هي دوال تقبل دوال أخرى كمعاملات، أو تُرجع دوال أخرى. هذا يوفر مرونة كبيرة ويساعد في كتابة كود أكثر تنظيماً.

def greet(): return "Hello" def higher_order(func): print(func()) higher_order(greet)

تمرين تطبيقي

  1. قم بكتابة دالة تستخدم التكرار (Recursion) لحساب مجموع الأعداد من 1 إلى رقم معين.
  2. جرب استخدام التزيين (Decorators) لكتابة دالة تقوم بتسجيل الوقت الذي استغرقته دالة أخرى للتنفيذ.

تعليقات