سويت دوالك الخاصة من قبل — اليوم نرفعها مستوى احترافي بثلاث حيل تجعلها مرنة وذكية.
الحيلة 1: القيم الافتراضية. تخيل مطعم يبيع شاي: أكثر الزبائن يطلبونه "عادي" بدون ما يقولون. فالنادل يفترض عادي إلا إذا طلبت شي ثاني. الدالة نفسها:
def greet(name, greeting="أهلاً"):
return f"{greeting} {name}!"
print(greet("فليكس")) # أهلاً فليكس!
print(greet("سالم", "صباح الخير")) # صباح الخير سالم!القيمة الافتراضية greeting="أهلاً" تشتغل إذا ما أحد مررها — والنداء الثاني تجاوزها بقيمة جديدة. القيم الافتراضية = ميزات اختيارية، ما ترغم أحد يدخل شي ما يبيه.
الحيلة 2: إرجاع أكثر من قيمة. الدالة العادية ترجع شيئاً واحداً — لكن بايثون تقدر ترجع حزمة كاملة، وتفكها متغيرات:
def min_max(nums):
return min(nums), max(nums)
lo, hi = min_max([3, 9, 1, 7])
print("الأصغر:", lo) # 1
print("الأكبر:", hi) # 9رجعنا قيمتين بفاصلة، واستقبلناهم بمتغيرين بفاصلة — انفكت الحزمة! تنفع لأي شي: أصغر وأكبر، اسم ودرجة، سعر وكمية.
الحيلة 3: عدد معاملات مفتوح (*args). أحياناً ما تعرف كم رقم بيعطيك المستخدم. النجمة تسوي حقيبة تجمع كل شي يعطى:
def add_all(*nums):
total = 0
for n in nums:
total += n
return total
print(add_all(1, 2)) # 3
print(add_all(1, 2, 3, 4, 5)) # 15النجمة قبل الاسم تقول: "كل اللي يجي، اجمعه بقائمة اسمها nums". نداء واحد أو عشرة أرقام — الدالة شغالة!
جرب بنفسك: سوّ دالة summarize تأخذ أي عدد من الدرجات وترجع المعدل والأعلى والأصغر مرة وحدة — ثلاث حيل ببرنامج واحد.