الدوال
Functions
تنظيم الشيفرة في وحدات قابلة لإعادة الاستخدام باستخدام def والمعاملات والقيم المعادة.
تعريف دالة
def accuracy(correct, total):
"""تعيد نسبة الإجابات الصحيحة."""
if total == 0:
return 0.0
return correct / total
print(accuracy(45, 50)) # 0.9النص بين علامات الاقتباس الثلاثية هو docstring، ويظهر عند كتابة help(accuracy).
المعاملات الافتراضية والمسماة
def train(epochs=10, lr=0.01):
print(epochs, lr)
train() # 10 0.01
train(lr=0.001) # 10 0.001*args و**kwargs
def mean(*values):
return sum(values) / len(values)
def show(**options):
for k, v in options.items():
print(k, "=", v)
mean(1, 2, 3) # 2.0
show(model="CNN", depth=3)النطاق
threshold = 0.5 # متغير عام
def classify(p):
label = 1 if p >= threshold else 0 # label محلي
return labelيمكن قراءة المتغير العام داخل الدالة، لكن الأفضل تمرير القيم كمعاملات لجعل الدالة مستقلة وسهلة الاختبار.
دوال lambda
دوال قصيرة بلا اسم تُستخدم غالباً كمعامل لدوال أخرى:
pairs = [("a", 0.7), ("b", 0.9)]
pairs.sort(key=lambda t: t[1], reverse=True)تلميحات الأنواع
def scale(x: float, factor: float = 2.0) -> float:
return x * factorالتلميحات لا تُفرض وقت التشغيل، لكنها تساعد المحررات وأدوات الفحص الساكن.
مزلق شائع
لا تستخدم كائناً قابلاً للتعديل كقيمة افتراضية:
def add(item, bag=None):
if bag is None:
bag = []
bag.append(item)
return bagمصطلحات الدرس
- الدالة Function
- كتلة شيفرة مسماة تؤدي مهمة محددة ويمكن استدعاؤها مرات متعددة بمدخلات مختلفة.
- النطاق Scope
- المنطقة من البرنامج التي يكون فيها اسم المتغير معرَّفاً ومتاحاً.
الملخص
الدالة كتلة شيفرة مسماة تُعرَّف بالكلمة def، تستقبل معاملات وتعيد قيمة بالكلمة return. تدعم Python المعاملات الافتراضية والمسماة و*args و**kwargs، وللمتغيرات نطاق (scope) محلي داخل الدالة. توثيق الدالة بنص docstring وتلميحات الأنواع يحسّن قابلية القراءة.
أسئلة مراجعة
-
ماذا تعيد الدالة التي لا تحتوي على return؟
تعيد None.
-
لماذا يُفضّل عدم استخدام قائمة كقيمة افتراضية لمعامل؟
لأن القيمة الافتراضية تُنشأ مرة واحدة عند تعريف الدالة وتُشارك بين الاستدعاءات، فتتراكم التعديلات عليها.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة