الوسائط المُسمَّاة

6.6 الوسائط المُسمَّاة

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • وصف الفرق بين الوسائط الموضعية والوسائط المُسمَّاة.
  • إنشاء الدوال التي تستخدم الوسائط الموضعية والوسائط المُسمَّاة وقيم المُعامِلات الافتراضية.

الوسائط المُسمَّاة

حتى الآن، تم استدعاء الدوال باستخدام الوسائط الموضعية، وهي وسائط تُسند إلى المُعامِلات بالترتيب. تسمح بايثون أيضًا بـالوسائط المُسمَّاة، وهي وسائط تستخدم أسماء المُعامِلات لإسناد القيم بدلاً من الترتيب. عند خلط الوسائط الموضعية والوسائط المُسمَّاة، يجب أن تأتي الوسائط الموضعية أولاً بالترتيب الصحيح، قبل أي وسائط مُسمَّاة.

نقطة تحقق

استخدام الوسائط المُسمَّاة

مفاهيم تطبيقية

استخدام الوسائط المُسمَّاة والموضعية

تأمل الدالّة التالية:

    def greeting(msg, name, count):
      i = 0
      for i in range(0, count):
        print(msg, name)
1.
أيٌّ هو الوسيط الموضعي في greeting(count=1, name="Ash", msg="Hiya")؟
  1. count=1
  2. name="Ash"
  3. msg="Hiya"
  4. لا شيء مما سبق
2.
ما ناتج greeting(count=2, name="Ash", msg="Hiya")؟
  1. Ash Hiya
    Ash Hiya
  2. Hiya Ash
    Hiya Ash
3.
أيٌّ هو الوسيط الموضعي في greeting("Welcome", count=1, name="Anita")؟
  1. "Welcome"
  2. count=1
  3. name="Anita"
4.
أي استدعاء دالّة سينتج عنه خطأ؟
  1. greeting("Morning", "Morgan", count=3)
  2. greeting(count=1,"Hi", "Bea")
  3. greeting("Cheers", "Colleagues", 10)

قيم المُعامِلات الافتراضية

يمكن للدوال تعريف قيم مُعامِلات افتراضية لاستخدامها إذا لم يتم توفير وسيط موضعي أو مُسمَّى للمُعامِل. مثال: def season(m, d, hemi="N"): يُعرّف قيمة افتراضية هي "N" للمُعامِل hemi. ملاحظة: تُعرّف قيم المُعامِلات الافتراضية مرة واحدة فقط لتستخدمها الدالّة، لذا لا ينبغي استخدام الكائنات القابلة للتغيير (مثل القوائم) كقيم افتراضية.

يحسب مثال الفيزياء أدناه الوزن كقوة بالنيوتن، بالنظر إلى الكتلة بالكيلوغرام والتسارع بـ ms2ms2. الجاذبية على الأرض هي 9.8 ms2ms2، والجاذبية على المريخ هي 3.7 ms2ms2.

نقطة تحقق

استخدام قيم المُعامِلات الافتراضية

مفاهيم تطبيقية

استخدام قيم المُعامِلات الافتراضية

تأمل النسخة المُحدَّثة التالية من greeting():

    def greeting(msg, name="Friend", count=1):
      i = 0
      for i in range(0, count):
        print(msg, name)
5.
أي المُعامِلات لها قيم افتراضية؟
  1. msg
  2. name و count
  3. كلها
6.
أي استدعاء دالّة صحيح؟
  1. greeting()
  2. greeting(name="Gina")
  3. greeting("Greetings")
7.
ما ناتج greeting(count=0, msg="Hello")؟
  1. Hello Friend
  2. لا شيء
  3. Error

توصيات PEP 8: المسافات

يوصي دليل الأسلوب PEP 8 بعدم وجود مسافات حول = عند الإشارة إلى الوسائط المُسمَّاة وقيم المُعامِلات الافتراضية.

جرّب بنفسك

تبرعات البث المباشر

اكتب دالّة، donate()، تسمح لمشاهد عبر الإنترنت بإرسال تبرع إلى مُذيع البث المباشر. تحتوي donate() على ثلاثة مُعامِلات:

  • amount: المبلغ المراد التبرع به، القيمة الافتراضية: 5
  • name: اسم المتبرع، القيمة الافتراضية: "مجهول"
  • msg: رسالة المتبرع، القيمة الافتراضية: ""

بافتراض:

    donate(10, "gg")

الإخراج هو:

    Anonymous donated 10 credits: gg

اكتب استدعاءات دالّة تستخدم القيم الافتراضية بالإضافة إلى الوسائط الموضعية والوسائط المُسمَّاة.