الدوال Functions — أساسيات Python
الدوال (Functions)
عندما تكرر نفس الأوامر في أكثر من مكان، الأفضل أن تضعها في دالة: كتلة كود لها اسم، تكتبها مرة وتستدعيها متى شئت. الدوال تجعل البرنامج أقصر، وأسهل في الفهم والتعديل (عدّل في مكان واحد بدل عشرة).
التعريف والاستدعاء
def greet():
print("مرحباً!")
greet() # الاستدعاء: هنا يُنفَّذ الكود
greet()تعريف الدالة وحده لا ينفذها؛ التنفيذ يحدث عند الاستدعاء greet().
المعاملات (parameters)
def greet(name):
print("مرحباً", name)
greet("منى") # "منى" هي الوسيط (argument)return: الدالة التي ترجع قيمة
def area(width, height):
return width * height
result = area(4, 5) # 20
print(area(2, 3) + 1) # 7- return ترجع القيمة وتُنهي الدالة فوراً.
- الدالة التي لا تحتوي return ترجع None.
print أم return؟ (فرق أساسي)
def add_print(a, b):
print(a + b) # يعرض فقط
def add_return(a, b):
return a + b # يرجع القيمة لمن استدعى
x = add_print(2, 3) # يطبع 5 لكن x تساوي None
y = add_return(2, 3) # y تساوي 5 ويمكن استخدامهاالقاعدة: الدالة التي تحسب شيئاً يجب أن ترجعه بـ return، واترك الطباعة لمن يستدعيها.
القيم الافتراضية والوسائط بالاسم
def power(base, exp=2):
return base ** exp
power(3) # 9
power(2, exp=5) # 32إرجاع أكثر من قيمة
def min_max(nums):
return min(nums), max(nums)
low, high = min_max([4, 9, 1])توثيق الدالة
اكتب سطراً بين علامات تنصيص ثلاثية أول الدالة يشرح ما تفعله (docstring).
تمرين
اكتب دالة is_even(n) ترجع True أو False، ودالة average(numbers) ترجع متوسط قائمة، واستخدمهما.
def greet(name):
"""تطبع رسالة ترحيب"""
print(f"مرحباً {name}!")
greet("أحمد")
def area(width, height):
"""ترجع مساحة مستطيل"""
return width * height
print(area(4, 5)) # 20
# print مقابل return
def add_print(a, b):
print(a + b)
def add_return(a, b):
return a + b
x = add_print(2, 3) # يطبع 5
y = add_return(2, 3)
print(x, y) # None 5
# قيمة افتراضية ووسيط بالاسم
def power(base, exp=2):
return base ** exp
print(power(3), power(2, exp=5)) # 9 32
# إرجاع أكثر من قيمة
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([4, 9, 1, 7])
print(low, high) # 1 9
# دوال تستخدم دوال أخرى
def is_even(n):
return n % 2 == 0
def count_evens(numbers):
count = 0
for n in numbers:
if is_even(n):
count += 1
return count
print(count_evens([1, 2, 3, 4, 6])) # 3
اختبر فهمك