-1-
-2-
3. المستوى المتوسط: المرونة والتحكم المتقدم
أ) القيم الافتراضية للمعلمات (Default Arguments)
يمكنك وضع قيمة افتراضية للمعلمة، بحيث إذا نسي المستخدم إدخالها، تستخدم بايثون القيمة الافتراضية تلقائياً.
Python
def describe_pet(pet_name, animal_type="كلب"):
print(f"لديك {animal_type} اسمه {pet_name}.")
describe_pet("بلاك") # سيستخدم القيمة الافتراضية "كلب"
describe_pet("لوسي", "قطة") # سيستبدل القيمة الافتراضية بـ "قطة"
ب) المعلمات المسماة (Keyword Arguments)
يمكنك تمرير الوسائط بذكر اسم المعلمة صراحة بغض النظر عن الترتيب.
Python
def print_full_name(first_name, last_name):
print(f"الاسم الكامل: {first_name} {last_name}")
# تمرير القيم بالترتيب العادي
print_full_name("محمد", "علي")
# تمرير القيم بذكر الأسماء (لا يهم الترتيب هنا)
print_full_name(last_name="حسن", first_name="إبراهيم")4. المستوى المتقدم: الاحتراف والتعامل مع عدد غير محدد من البيانات
ماذا لو كنت لا تعرف كم عدد المدخلات التي سيدخلها المستخدم دالة؟ هنا يأتي دور الـ *args و **kwargs.
أ) استخدام *args (عدد غير محدد من الوسائط العادية)
تسمح للدالة باستقبال أي عدد من الأرجيومنتس وتخزينها في شكل Tuple (قائمة غير قابلة للتعديل).
Python
def calculate_sum(*args):
total = 0
for num in args:
total += num
return total
print(calculate_sum(1, 2, 3)) # الناتج: 6
print(calculate_sum(10, 20, 30, 40)) # الناتج: 100
ب) استخدام **kwargs (عدد غير محدد من الوسائط المسماة - Keyword Arguments)
تسمح للدالة باستقبال بيانات على شكل مفتاح وقيمة (Key-Value Pairs)، وتخزنها في شكل Dictionary (قاموس).
Python
def print_user_profile(**kwargs):
print("\nمعلومات المستخدم:")
for key, value in kwargs.items():
print(f"- {key}: {value}")
print_user_profile(name="أحمد", age=25, city="القاهرة", job="مبرمج")
-3-
-4-
