معنى Parameter بالعربي: «مُعامِل».
وهو المتغيّر الذي نكتبه في تعريف الدالة.
معنى Argument بالعربي: «وسيط» أو «قيمة مُمرَّرة».
وهو القيمة الحقيقية التي نرسلها عند استدعاء الدالة.
معنى Parameter و Argument بالعربي
💡 خارج البرمجة: Argument في الإنجليزية العامة تعني «حُجّة» أو «نقاش»، وParameter تعني «مَعلَمة» أو «حدّ» يضبط شيئًا ما. أما في البرمجة فالمعنى ما في الجدول.
الفرق بين Parameter و Argument بالرسم
تشبيه بسيط
تخيّل استمارة تسجيل فيها خانتان: «الاسم» و«العمر».
الخانتان المطبوعتان في الاستمارة هما الـ Parameters.
وما تكتبه فيهما، مثل «سارة» و«20»، هو الـ Arguments.
الاستمارة نفسها تبقى كما هي، وكل شخص يملؤها بقيم مختلفة.
مثال بالكود
الفكرة واحدة في كل لغات البرمجة. هذه الدالة نفسها في Python وJavaScript وPHP:
# Python
def add(x, y): # x, y = parameters
return x + y
print(add(3, 5)) # 3, 5 = arguments → 8
// JavaScript
function add(x, y) { // x, y = parameters
return x + y;
}
console.log(add(3, 5)); // 3, 5 = arguments → 8
<?php
// PHP
function add($x, $y) { // $x, $y = parameters
return $x + $y;
}
echo add(3, 5); // 3, 5 = arguments → 8
جرّبتُ الأمثلة الثلاثة، وكلها تطبع 8.
أين ستراها في رسائل الأخطاء؟
إذا استدعيت الدالة السابقة في Python بقيمة واحدة فقط، add(3)، تظهر هذه الرسالة:
TypeError: add() missing 1 required positional argument: 'y'
أي: «ينقص الدالة وسيط واحد مطلوب، لملء المعامل y». لهذا من المفيد أن تعرف الكلمتين؛ فهما تظهران كثيرًا في رسائل الأخطاء والتوثيق.
القيمة الافتراضية: معامل لا يحتاج دائمًا إلى وسيط
يمكن أن نعطي المعامل قيمة افتراضية، فيصبح إرسال الوسيط له اختياريًا:
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
print(greet("Sara")) # Hello, Sara!
print(greet("Ali", "Welcome")) # Welcome, Ali!
لذلك لا يُشترط دائمًا أن يساوي عدد الوسائط عدد المعاملات.
Parameter و Hyperparameter في الذكاء الاصطناعي
في الذكاء الاصطناعي للكلمة معنى آخر قريب:
- المعامِلات (Parameters): أرقام كثيرة داخل النموذج، تُسمّى أيضًا الأوزان، يتعلّمها النموذج بنفسه أثناء التدريب. شرحتُها في درس «ما النموذج؟».
- المعامِلات الفائقة (Hyperparameters): إعدادات يختارها المطوّر قبل التدريب، ولا يتعلّمها النموذج، مثل سرعة التعلّم وعدد مرات التدريب على البيانات.
باختصار: الـ Parameter (المعامل) اسمٌ في تعريف الدالة ينتظر قيمة، والـ Argument (الوسيط) هو القيمة التي نرسلها له عند الاستدعاء.