الدوال المتقدمة في بايثون - الجزء الثاني
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)
تمرين تطبيقي
- قم بكتابة دالة تستخدم التكرار (Recursion) لحساب مجموع الأعداد من 1 إلى رقم معين.
- جرب استخدام التزيين (Decorators) لكتابة دالة تقوم بتسجيل الوقت الذي استغرقته دالة أخرى للتنفيذ.

تعليقات
إرسال تعليق