عندما نستدعي دالة، يكون نقل البيانات دائمًا جزءًا لا يتجزأ من الوظيفة الرئيسية ووظيفة الاستدعاء. مع نقل البيانات، يتم نقل المعلمات . الغرض من المعلمات هو تمرير البيانات إلى الوظائف.
على سبيل المثال، اشترينا عصارة، عندما نضيف التفاح، سيخرج عصير التفاح. عندما نضيف البطيخ، سيخرج عصير البطيخ. يتم تمرير المعلمات إلى الهدف من خلال الوظيفة الرئيسية دالة، وستعيد لنا الدالة المطلوبة النتيجة.
بعد ذلك، دعونا نتعرف على تمرير المعلمات.
لمعرفة كيفية تمرير معلمات الدالة، نحتاج أولاً إلى فهم ما هي المعلمات الرسمية والمعلمات الفعلية. دعونا نواصل المثال أعلاه. لدينا حاوية لحفظ الفاكهة في العصارة. نضع الفاكهة في هذه الحاوية، ثم تبدأ العصارة في العمل. هناك علاقة مماثلة بين المعلمات الرسمية والمعلمات الفعلية.
المعلمات الرسمية هي المعلمات المحددة بين قوسين عندما نحدد الوظيفة، وسوف نستخدم هذه المعلمة لكتابة التعليمات البرمجية داخل الوظيفة، والمعلمات الفعلية هي المعلمات التي يتم تمريرها عند استدعاء الوظيفة على هذه المعلمة الفعلية بدلا من المعلمات الرسمية.
انظر إلى المثال التالي:
>>>أ=30>>>defget_salary(أيام):...الراتب=أيام*300...طباعة(الراتب)...>>>get_salary(أ)9000
في المثال أعلاه، أيام المعلمة المستخدمة عند إنشاء الوظيفة هي معلمة رسمية عندما نستدعي الوظيفة، A هي المعلمة الفعلية، وهي في الواقع المعلمة التي سيتم إحضارها إلى الوظيفة.
عندما نقوم بإنشاء دالة، يمكننا تحديد معلمات رسمية متعددة بين قوسين. عندما نسميها، يجب أن يكون عدد المعلمات وموضعها متسقًا مع المعلمات التي تم إنشاؤها.
ماذا سيحدث إذا كانت الدالة التي أنشأناها تحتوي على معلمتين رسميتين، ولكننا نستخدم معلمة فعلية واحدة فقط عند استدعائها؟
>>>defget_message(address,number):...print(address,number)...>>>get_message('Suzhou')Traceback(mostrecentcallllast):File<stdin>,line1,in<module>TypeError:get_message () مفقود 1 وسيطة الموضع المطلوبة: "الرقم"
يمكننا أن نجد أنه عندما لا يكون عدد المعلمات الفعلية مساوياً لعدد المعلمات الرسمية، سيتم طرح استثناء، وهو ما يعني على وجه التحديد أن رقم معلمة الموضع الضروري مفقود.
عندما تكون مواضع المعلمات غير متسقة، سيحدث خطأان: أحدهما هو الإبلاغ عن خطأ مباشرة، لأننا سنحدد أنواعًا مختلفة وفقًا لطبيعة المعلمات عند تمرير المعلمات، وبالتالي فإن أخطاء نوع البيانات ستؤدي إلى استثناءات.
خطأ آخر هو أن نوع بيانات المعلمة التي تم تمريرها صحيح، ولكن الموضع خاطئ، مما سيؤدي إلى نتائج إخراج خاطئة.
من أجل تحسين سهولة قراءة البرنامج، يمكن أيضًا استخدام وسيطات الكلمات الرئيسية عند استدعاء الوظائف.
نتعرف على وسيطات الكلمات الرئيسية من خلال حساب حجم الحاوية.
>>>إلغاء الحجم(الطول،العرض،الارتفاع):...الحجم=الطول*العرض*الارتفاع...طباعة('الحجم هو:',الحجم)...>>>الحجم(الطول=20,العرض= 30، الارتفاع=3) الحجم: 1800
يمكن أن يؤدي استخدام معلمات الكلمات الرئيسية إلى حفظ عملية تحديد المتغيرات، وتعيين قيم للمعلمات مباشرة عند استدعاء الوظيفة، ثم تمريرها إلى الوظيفة، وإرجاع النتيجة في النهاية. في طريقة النقل هذه، لا يؤثر الاختلاف في موضع المعلمة على نتيجة الإخراج.
عندما نحدد دالة، يمكننا تحديد قيمة أولية لمعلمات الوظيفة، بحيث إذا لم يتم إعطاء معلمات فعلية عندما نستدعي الوظيفة، فستستخدم الوظيفة المعلمات الافتراضية.
انظر إلى المثال التالي:
>>>defvolume(length=100,width=100,height=10):...volume=length*width*height...print(volume)...>>>volume()# لا يعطي معلمات فعلية عندما يتم إعطاء المعلمات الفعلية، سيتم استخدام المعلمات الافتراضية 100000 >>>volume(10,10,10)#. سيتم تمرير المعلمات الفعلية وستكون نتيجة الإخراج 1000.
من خلال المثال أعلاه، إذا أعطينا قيمة افتراضية عند إنشاء الوظيفة، فسيتم استخدام المعلمات الافتراضية تلقائيًا إذا لم نقم بإعطاء معلمات فعلية عند استخدام الوظيفة.
في بايثون، يمكن تغيير عدد معلمات الدالة، مما يعني أن عدد المعلمات يمكن أن يكون غير مؤكد. وتسمى هذه المعلمات بالمعلمات المتغيرة. هناك نوعان من المعلمات المتغيرة. أحدهما هو إضافة * قبل المعلمات وبهذه الطريقة، يتم تمرير المعلمات المتغيرة في شكل صفوف عند تمريرها. يتم تمرير المعلمات المتغيرة في شكل صفوف. يتم تمرير المعلمات في شكل قاموس عند تمريرها. نقدم الطريقة الأولى بشكل أساسي.
انظر إلى المثال التالي:
>>>defadd_number(*number):...add_num=0...foriinnumber:...add_num+=i...print(add_num)...>>>add_number(1,2,3,4,5 )15
عند استخدام المعلمات المتغيرة، سيتم تخزين هذه المعلمات في صف وتمريرها إلى الوظيفة، لذلك عندما نريد استخدام هذه المعلمات، يمكننا استخدام قيم الاجتياز أو الفهرس.
إن تمرير المعلمات للوظائف هو نفسه تقريبًا إذا كنت تريد تعلم الوظائف جيدًا، فيجب عليك إتقان تمرير المعلمات. يعد التمرير الصحيح للمعلمات أمرًا بالغ الأهمية في استخدام الوظائف.