هناك ثلاثة أنواع من الوسيطات التي يمكن أن تقبلها دالة Python: قياسي ، ومتغير (* args) ، وكلمة أساسية (** kwargs). الوسيطات القياسية هي الأبسط لكنها محدودة الوظائف. من ناحية أخرى ، يمكّنك * args و ** kwargs من جعل وظائفك أكثر مرونة من خلال قبول عدد متغير من المدخلات.

يعتمد نوع تمرير المناقشة الذي تختاره على طبيعة وظيفتك وأسلوب البرمجة المفضل لديك.

الوظائف الأساسية في بايثون

لفهم كيفية عمل الوسيطتين المتغيرين في دوال بايثون ، من الضروري فهم سبب وجودهما في المقام الأول. تعلن وظيفة بسيطة عن عدد ثابت من الوسائط المجهولة مثل:

defالملحق(أ ، ب ، ج):
إرجاع أ + ب + ج

تعمل هذه الوظيفة بشكل جيد ، ولكن هناك مجال للتحسين. أكبر مشكلة هي أنه يتعامل مع وسيطين فقط ، لذلك يمكنه فقط جمع رقمين. ماذا لو كنت تريد إضافة رقمين أو أربعة أرقام؟ لن تسمح لك هذه الوظيفة بالقيام بذلك. سيؤدي تمرير وسيطات أكثر أو أقل مما تقبله الوظيفة إلى حدوث خطأ في النوع.

بالطبع ، يمكنك إنشاء المزيد من الوظائف لقبول أعداد مختلفة من الوسائط. لكن هذا غير مريح ولن يكون جيدًا على الإطلاق. ستحتاج أيضًا إلى إنشاء وظيفة جديدة في كل مرة تريد فيها التعامل مع عدد جديد من المدخلات.

instagram viewer

وهنا يأتي دور الوسيطات المتغيرة ووسيطات الكلمات المفتاحية. باستخدام * args و ** kwargs ، يمكنك تحديد وظائف مرنة يمكن أن تأخذ عددًا متغيرًا من المدخلات.

ما هي * args في بايثون؟

الفكرة الرئيسية وراء * args في Python هي السماح لك بتمرير عدد متغير من المدخلات إلى وظيفتك. هذا مفيد في العديد من التطبيقات. على سبيل المثال ، فكر في برنامج آلة حاسبة حيث تريد منح المستخدم القدرة على إضافة رقمين أو أكثر وإرجاع المجموع.

لاحظ أن args هو مجرد اسم متغير ؛ إنه * المهم. يمكنك استخدام أي اسم صالح للمتغير الخاص بك ، طالما قمت بتضمين *.

كيفية استخدام * args

يمكنك تعديل وظيفة addnum لأخذ عدد متغير من المدخلات على النحو التالي:

defالملحق(* أرغس):
المجموع = 0

إلى عن على الأس في أرغس:
المجموع = المجموع + الأسطوانات

إرجاع المجموع

مقتطف الشفرة أعلاه يستخدم حلقة for للتكرار من خلال المدخلات المقدمة.

يمكنك بعد ذلك استدعاء دالة addnum باستخدام وسيطات متغيرة وستعمل دون حدوث خطأ:

مطبعة(الملحق (10, 1, 12, 12, 4, 54, 5)) ## تُرجع 98
مطبعة(الملحق (14, 54, 5)) # إرجاع 73
مطبعة(الملحق (10, 5)) # إرجاع 15

ما هي ** kwargs في بايثون؟

بينما يسمح لنا كل من * args و ** kwargs بتمرير عدد متغير من المدخلات إلى الوظائف ، فإن الأخير خاص بوسائط الكلمات الرئيسية. في حالة عدم معرفتك ، فإن وسيطات الكلمات الرئيسية هي مجرد أسماء خيالية للوسائط التي تحمل اسمًا.

شيء فريد آخر حول ** kwargs هو أن Python تمثل القيمة كقاموس.

كيفية استخدام ** kwargs

مثل * args ، فإن النجمة المزدوجة هي الجزء المهم ؛ يمكنك استخدام أي كلمة كاسم معلمة. فيما يلي مثال على كيفية استخدام ** kwargs في Python:

defالحضور_الأسبوعي(** أيام الأسبوع):
إجمالي الحاضرين = 0

إلى عن علىالحاضرينفيأيام الأسبوع.القيم():
total_attendees = total_attendees + الحضور

إرجاع مجموع الحاضرين

مطبعة(الإثنين = 265الثلاثاء = 698الأربعاء = 365، الخميس = 463، الجمعة = 234)) # تُرجع 2025
مطبعة(الإثنين = 265، الجمعة = 234)) # إرجاع 499
مطبعة(حضور أسبوعي (الأربعاء = 365، الخميس = 463، الجمعة = 234)) # تُرجع 1062

يستخدم مقتطف الشفرة أعلاه أيضًا حلقة for ، ولكن هذه المرة مع طريقة القيم المضمنة في Python (). تقوم هذه الطريقة بإرجاع كائن عرض لجميع القيم الموجودة في القاموس. تسمح لك طريقة القيم () بذلك حلقة من خلال قاموس Python بدون متاعب.

استخدم المتغيرات لجعل وظائف بايثون مرنة

تعتبر وسيطات الدالة مفيدة ، ولكن يمكن أن تستفيد بعض الوظائف من قبول عدد متغير من الوسائط. يمكن أن تجعل وسيطات الكلمات الرئيسية المسماة شفرتك أكثر قابلية للقراءة وأسهل في الاستخدام. يجب أن تتبنى حجج بايثون * args و ** kwargs. إنها سهلة الاستخدام للغاية ، ومعها يمكنك جعل وظائفك وبرامجك أكثر مرونة.

باتباع الخطوات ومقتطفات التعليمات البرمجية أعلاه ، نأمل أن تتمكن الآن من استخدام الكلمات الأساسية المتغيرة والوسيطات التي لا تتضمن كلمات رئيسية لوظائفك.