Яка різниця між аргументом і параметром?


717

Коли ми говоримо про усні слова про методи, я ніколи не знаю, чи використовувати аргумент слова чи параметр чи щось інше. У будь-якому випадку інші люди знають, що я маю на увазі, але що правильно, і яка історія термінів?

Я програміст на C #, але мені також цікаво, чи люди використовують різні терміни різними мовами.

Для запису я самоучка без досвіду інформатики. (Будь ласка, не кажіть мені читати Code Complete, тому що я прошу це на користь інших людей, які вже не мають копії чудової книги Стіва МакКоннелла .)

Підсумок

Загальний консенсус здається таким, що нормально використовувати ці терміни взаємозамінно в командному середовищі. За винятком випадків, коли ви визначаєте точну термінологію; тоді ви також можете використовувати " формальний аргумент / параметр" та " фактичний аргумент / параметр", щоб відмовитись.


9
Я використовую їх взаємозамінно .. ніхто ще не сміявся з мене .. 'ця функція має 4 аргументи .. ця функція бере 4 параметри.' звучить так само.
Гішу

54
Добре використовувати їх беззмістовно, за винятком випадків, коли ви намагаєтесь описати, як працюють параметри та як передаються аргументи тощо.
Джон Скіт

2
Існує щонайменше дві незакриті мовно-агностичні версії цього питання: stackoverflow.com/questions/3176310/… та stackoverflow.com/questions/427653/arguments-or-parameters . Є ще одна версія C # цього питання; Я просив об'єднання.
Попс

1
Радий, що ти згадав Стіва МакКоннелла. Я познайомився з ще одним хлопцем, який знає майстерність програмного забезпечення разом з Робертом К. Мартіном.
RBT

3
Я думаю, незалежно від того, перебуваєте ви в офіційному середовищі чи ні, ви повинні прагнути використовувати правильні умови. Я думаю, що це досить просто. Коли ви викликаєте метод, ви передаєте аргументи. Коли ви визначаєте метод, ви визначаєте параметри, які будуть приймати аргументи з виклику методу / функції. аргумент - незалежна змінна, пов'язана з функцією і визначає значення функції. параметр - межа або межа, що визначає сферу певного процесу чи діяльності.
jsquaredz

Відповіді:


904

Параметр - змінна у визначенні методу. Коли метод викликається, аргументами є дані, які ви передаєте в параметри методу.

public void MyMethod(string myParam) { }

...

string myArg1 = "this is my argument";
myClass.MyMethod(myArg1);

196
Алітируючий мнемонізм, який може допомогти: Аргументи актуальні. ;)
thSoft

8
У відповіді зазначається, що "Параметр є змінною у визначенні методу", але може бути краще сказати "декларація методу" [якщо хтось проводить розмежування між "оголошенням" та "визначенням"]
нанда

110
"Ви визначаєте параметри і ви вносите аргументи."
Грег М. Крсак

5
параметр => коли ми визначаємо функцію, аргумент =>, коли ми викликаємо цей метод. (ПРАВИЛЬНО МЕНЕ, ЯКЩО Я
ПОМИЛУЮТЬСЯ

7
Параметри - це Імена. Аргументи - Цінності.
Азіз Альто

327

Параметр є змінним у оголошенні функції.

Аргумент - це фактичне значення цієї змінної, яке передається функції.


7
Ці мови зазвичай посилаються на аргумент / список параметрів, переданий методу як *argsчи ARGVні *params:-)
karatedog

6
*paramsбуде ім'ям змінної, яка призначена для вмісту імен параметрів (можливо, використовується для самоаналізу).
trss

6
@karatedog І це повністю відповідає цьому розрізненню. Параметри іменуються під час оголошення, аргументи відомі лише під час виклику. Синтаксис *argsоголошує параметр args , значення якого - це перелік (ім'я та тип, відомий під час оголошення) аргументів (число яких відомо лише в час виклику).
Еміль Лундберг

72

На цій темі вже є запис у Вікіпедії (див. Параметр ), який визначає та розрізняє параметр і аргумент термінів . Коротше кажучи, параметр є частиною підпису функції / процедури / методу, а аргумент - фактичне значення, яке надається під час виконання та / або сайту виклику для параметра.

У статті Вікіпедії також зазначено, що обидва терміни часто вживаються синонімічно (особливо, коли міркують про неформальний код):

Хоча параметри також часто називають аргументами, аргументи правильніше розглядати як фактичні значення або посилання, присвоєні змінним параметрів, коли підпрограма викликається під час виконання.

З огляду на наступний приклад функції в C, яка додає два цілих числа, xі yбуде називатися її параметрами:

int add(int x, int y) {
    return x + y;
}

На сайті виклику, використовуючи add, наприклад, наведений нижче приклад, 123 і 456 називатимуться аргументами виклику.

int result = add(123, 456);

Крім того, деякі мовні специфікації (або формальна документація) вибирають виключно використовувати параметр або аргумент і замість цього використовувати прикметники, такі як формальні та фактичні, для розмежування двох випадків. Наприклад, документація C / C ++ часто посилається на параметри функції як формальні аргументи, а аргументи виклику функції - як фактичні аргументи . Наприклад, див. « Формальні та фактичні аргументи » у візуальній мові Visual C ++ .


+1 для пояснення того, як вони зазвичай використовуються, а також їх формальних визначень, а також для згадування загального використання "формальних" та "фактичних" аргументів / параметрів для їх розрізнення без двозначності.
Механічний равлик

Це чудове пояснення, але його майже неможливо зрозуміти порівняно з простотою концепції. Параметр - це те, що прийнято, аргумент - це те, що викликається. Це вулиця в одну сторону.
ihodonald

69

Простий:

  • P ARAMETER → P LACEHOLDER (Це означає, що заповнювач належить до імені функції, який використовується в тілі функції)
  • RGUMENT → CTUAL ЗНАЧЕННЯ (Це означає , що фактичне значення , яке передається з допомогою функції виклику)

3
Гарний гак пам’яті
Tanckom

31

Параметр - це те, що потрібно заповнити під час виклику функції. Що ви вкладаєте в нього, це аргумент.

Простіше встановити: аргумент переходить у параметр, аргумент - це значення параметра.

Трохи більше інформації про: http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments


29

Параметр є змінним у оголошенні функції.

Аргумент - це фактичне значення цієї змінної, яке передається функції. введіть тут опис зображення


16

Використання параметрів термінів та аргументів дещо зловживається програмістами та навіть авторами. При роботі з методами параметр терміна використовується для ідентифікації заповнювачів у підписі методу, тоді як аргументи терміна - це фактичні значення, які ви передаєте методу.

Інструментарій сертифікації MCSD (іспит 70-483) Програмування в C # , 1-е видання, Wrox, 2013

Сценарій справжнього світу

// Define a method with two parameters
int Sum(int num1, int num2)
{
   return num1 + num2;
}

// Call the method using two arguments
var ret = Sum(2, 3);

10

Під час редагування я часто відкладаюсь від того, як люди забувають: структурна мова заснована на природних мовах.

Англійською

"Параметр" - заповнювач. Вони встановлюють формат відповідей розмовною мовою. За визначенням, це учасник дзвінка, що обмежує відповідь.

"Аргумент" - це позиція, яка розглядається. Ви аргументуєте свою думку: ви вважаєте аргумент.

Основна відмінність

Тематична роль аргументу - агент. Тематична роль параметра - реципієнт.

Взаємодії

Розгляньте аргумент як чоловічу частину, зробивши параметр жіночою частиною. Аргумент переходить у параметр.

Використання

Параметр зазвичай використовується у визначеннях. Аргумент зазвичай використовується у викликах.

Запитання

Закінчіть речення, щоб зробити його менш дисонансним.

(A) Якщо говорити про визначення:

  1. Який аргумент буде використаний []?
  2. Яким [] буде цей параметр []?

(B) Якщо говорити про виклик:

  1. Який параметр ви будете використовувати, []?
  2. Яким [] буде [] цей параметр?

Відповіді

(А)

  1. в / в / проти / з цим параметром
  2. аргумент (и) ... взяти

(B)

  1. і які деякі приклади аргументів
  2. аргумент (и) ... використовується в / в / проти / з

Перекриття

Як ви можете собі уявити, відповівши: у розмовній мові ці слова іноді даватимуть однакові відповіді!

Отже, як правило:

  • Зазвичай, якщо хтось хоче інформації про параметри, він хоче дізнатися більше про тип, назву змінної тощо. Вони можуть заплутатися, якщо ви наводите лише приклади аргументів.

    • Зазвичай, якщо хтось хоче інформацію про аргументи, він хоче знати, яке значення ви передали функції або її параметрам.

8

Цей приклад може допомогти.

int main () {
   int x = 5; 
   int y = 4;

   sum(x, y); // **x and y are arguments**
}

int sum(int one, int two) { // **one and two are parameters**
   return one + two;
}

8

Завжди пам’ятайте, що: - Аргументи передаються під час отримання параметрів.


8

В параметрах функції / методі описати вам значення , які він використовує , щоб обчислити результат.

У міркуванні про функції є значенням , присвоєне цих параметри в протягом конкретного виклику функції / методи.


7

Або може бути навіть простіше запам'ятати подібне у випадку необов'язкових аргументів методу:

public void Method(string parameter = "argument") 
{

}

parameter- це параметр, його значення, "argument"аргумент :)


7

Скажімо, ви авіакомпанія. Ви будуєте літак. Ви встановлюєте в ньому місця. Потім ви заповнюєте літак пасажирами і відправляєте його кудись. Пасажири (а точніше, якусь просторово-часову змінену версію) висаджуються. Наступного дня ви повторно використовуєте той самий літак і ті ж сидіння, але цього разу з різними пасажирами.

Площина - це ваша функція.

Параметри - сидіння.

Аргументи - пасажири, які їдуть у тих місцях.


7

Параметри та аргументи

Всі різні терміни, пов'язані з параметрами та аргументами, можуть збивати з пантелику. Однак якщо мати на увазі кілька простих моментів, ви зможете легко впоратися з цими умовами.

  1. У формальних параметрах для функції перераховані в оголошенні функції і використовуються в тілі визначення функції. Формальний параметр (будь-якого типу) - це вид порожнього або заповнювача, який заповнюється чимось, коли функція викликається.
  2. Аргумент є те , що використовується для заповнення формального параметра. Коли ви записуєте виклик функції, аргументи перераховуються в дужках після назви функції. Коли виконується виклик функції, аргументи підключаються для формальних параметрів.
  3. Терміни call-by-value та call-by-reference відносяться до механізму, який використовується в процесі підключення. У методі call-by-value використовується лише значення аргументу. У цьому механізмі виклику за значенням формальний параметр є локальною змінною, яка ініціалізується до значення відповідного аргументу. У механізмі виклику за посиланням аргумент є змінною, і використовується вся змінна. У механізмі виклику за посиланням змінна аргумент підміняється формальним параметром, так що будь-які зміни, які вносяться у формальний параметр, фактично вносяться до змінної аргументу.

Джерело: Absolute C ++, Walter Savitch

Це є,

введіть тут опис зображення


6

Умови дещо взаємозамінні. Відмінність, описана в інших відповідях, більш правильно виражається термінами формальний параметр для імені, використовуваного всередині тіла функції та параметра для значення, що надається на сайті виклику ( формальний аргумент та аргумент також поширені).

Також зауважте, що в математиці термін аргумент набагато частіше зустрічається, а параметр зазвичай означає щось зовсім інше (хоча параметр у параметричному рівнянні по суті є аргументом двох або більше функцій).


Але знову ж таки термін аргумент також перевантажений, принаймні у складному аналізі.
Механічний равлик

1
У мене є параметр із твердженням, що вони взаємозамінні. ;)
Wildcard

5

Аргумент - це інстанція параметра.


4
Це пояснення мені давно дав інший програміст, і я вважав це дуже чітким і стислим. Я розмістив це тут з цієї причини.
Пол Ріхтер

4

Так! Параметри та аргументи мають різні значення, які можна легко пояснити наступним чином:

Параметри функції - це імена, перелічені у визначенні функції.

Аргументи функції - це реальні значення, передані (і отримані) функцією.


4

Прості пояснення без коду

"Параметр" - це дуже загальна, широка річ, але аргумент: це дуже конкретна, конкретна річ. Це найкраще проілюструвати на щоденних прикладах:

Приклад 1: Торгові автомати - параметр є гроші, аргумент - 2,00 долара

Більшість машин приймають вхід і повертають вихід. Наприклад, торговий автомат бере як вклад: гроші, а повертає: газовані напої як вихід. У цьому конкретному випадку він приймає як параметр: гроші.

Який тоді аргумент? Добре, якщо я поклав $ 2,00 в машину, то аргумент такий: $ 2,00 - це дуже конкретний вхід.

Приклад 2: Автомобілі - параметр бензину

Розглянемо автомобіль: вони приймають бензин (безоловний бензин) як вхід. Можна сказати, що ці машини приймають параметри типу: бензин. Аргументом був би точний і конкретний внесок, який я вклав у свій автомобіль. Наприклад, у моєму випадку аргументом буде: 40 літрів безоловного бензину / бензину.

Приклад 3 - Опрацювання аргументів

Аргумент - це конкретний і конкретний приклад вводу. Припустимо, моя машина сприймає людину як внесок і перетворює їх на когось, хто не брехун.

Що тоді аргумент? Аргументом буде конкретна людина, яка насправді поставлена ​​в машину. наприклад, якщо Колін Пауелл буде поміщений в машину, тоді аргументом буде Колін Пауелл.

Отже, параметр був би людиною як абстрактним поняттям, але аргументом завжди була б конкретна людина з певним іменем, яка вводиться в машину. Аргумент конкретний і конкретний.

Ось і різниця. Простий.

Плутати?

Залиште коментар, і я виправлю пояснення.


3

Або навіть простіше ...

Аргументи в!

Параметри виходять!


3

Вони обидва не мають великої різниці у використанні в С, обидва терміни використовуються на практиці. В основному аргументи часто використовуються з функціями. Значення, передане разом із оператором виклику функції, називається аргументом, а параметром буде змінна, яка копіює значення у визначенні функції (називається формальним параметром).

int main ()
{
   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;

   /* calling a function to get max value */
   ret = max(a, b);

   printf( "Max value is : %d\n", ret );

   return 0;
}

/* function returning the max between two numbers */
int max(int num1, int num2) 
{
   /* local variable declaration */
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

У наведеному вище коді num1і num2формальні параметри і aта bфактичні аргументи.


3

Підручники Java Oracle визначають це розрізнення таким чином: "Параметри посилаються на перелік змінних у декларації методу. Аргументи - це фактичні значення, передані під час виклику методу. Коли ви викликаєте метод, використовувані аргументи повинні відповідати параметрам декларації. за типом та порядком ".

Більш детальне обговорення параметрів та аргументів: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html


3

Логічно кажучи, ми насправді говоримо про те саме. Але я думаю, що проста метафора допомогла б вирішити цю дилему.

Якщо метафори можна назвати різними точками з'єднання, ми можемо прирівняти їх до точок підключення на стіні. У цьому випадку ми можемо розглядати параметри та аргументи наступним чином;

Параметри - це розетки штепсельної вилки, які можуть приймати різні форми. Але підходять лише певні типи пробок.
Аргументи - це фактичні штекери, які будуть підключені до точок / розеток вилки для активації певного обладнання.


3

Параметр є змінною у визначенні функції
Аргумент - це значення параметра

<?php

    /* define function */
    function myFunction($parameter1, $parameter2)
    {
        echo "This is value of paramater 1: {$parameter1} <br />";
        echo "This is value of paramater 2: {$parameter2} <br />";
    }

    /* call function with arguments*/
    myFunction(1, 2);

?>

3

Взагалі кажучи, термін параметр і аргумент використовуються взаємозамінно для позначення інформації, яка передається у функції.

Але з точки зору функції:

  • Параметр є змінною в списку всередині дужок у визначенні функції.
  • Аргумент це значення , яке передається в функцію , коли вона викликається.

2

Коли ми створюємо метод (функцію) на Java, такий метод ..

data-type name of the method (data-type variable-name)

У дужках це параметри, і коли ми викликаємо метод (функцію), ми передаємо значення цього параметра, які називаються аргументами.


2

Відповідно до книги Алабахарі Йосипа "C # в нутрі" (C # 7.0, стор. 49):

static void Foo (int x)
{
    x = x + 1; // When you're talking in context of this method x is parameter
    Console.WriteLine (x);
}
static void Main()
{
    Foo (8); // an argument of 8. 
             // When you're talking from the outer scope point of view
}

У деяких людських мовах (афаїк італійська, російська) синоніми широко використовуються для цих термінів.

  • параметр = формальний параметр
  • argument = фактичний параметр

У моєму університеті професори використовують обидва назви.


0

Параметри - це змінні, отримані функцією. Отже, вони видно у оголошенні функції. Вони містять ім'я змінної зі своїм типом даних. Аргументи - це фактичні значення, які передаються іншій функції. ось чому ми можемо бачити їх у виклику функцій. Вони просто значення без їх типу даних


0

Формальні параметри функції перераховані в декларації функції та використовуються в тілі визначення функції. Формальний параметр (будь-якого типу) - це вид порожнього або заповнювача, який заповнюється чимось, коли функція викликається.

Аргумент є те , що використовується для заповнення формального параметра. Коли ви записуєте виклик функції, аргументи перераховуються в дужках після назви функції. Коли виконується виклик функції, аргументи підключаються для формальних параметрів.

Терміни call-by-value та call-by-reference відносяться до механізму, який використовується в процесі підключення. У методі call-by-value використовується лише значення аргументу. У цьому механізмі виклику за значенням формальний параметр є локальною змінною, яка ініціалізується до значення відповідного аргументу. У механізмі виклику за посиланням аргумент є змінною, і використовується вся змінна. У механізмі виклику за посиланням змінна аргумент підміняється формальним параметром, так що будь-які зміни, які вносяться у формальний параметр, фактично вносяться до змінної аргументу.


0

Параметри - це змінні, які використовуються для зберігання даних, переданих у функцію, для функції, яка використовується. Аргументи - це фактичні дані, які передаються у функцію при її виклику:

// x and y are parameters in this function declaration
function add(x, y) {
  // function body
  var sum = x + y;
  return sum; // return statement
}

// 1 and 2 are passed into the function as arguments
var sum = add(1, 2);

0

Я продумав це і зрозумів, що моя попередня відповідь була неправильною. Ось набагато краще визначення

{ Уявіть коробку з яйцями: Пачка ковбасних посилань: І покоївка } Вони представляють елементи функції, необхідної для підготовки, яка називається: (використовуйте будь-яку назву: Скажімо, приготування - це назва моєї функції).

Покоївка - це метод.

(Ви повинні __call_ або попросити цей метод зробити сніданок) (Акт приготування сніданку - це функція, що називається Приготування їжі ) _

Яйця та ковбаси - Параметри:

(тому що кількість яєць та кількість ковбас, які ви хочете з'їсти, є __різним_.) _

Ваше рішення є аргументом:

Він представляє __Value_ обраної кількості яєць та / або ковбас, які Ви готуєте ._

{ Мнемонічний }

_ "Коли ти зателефонуєш до покоївки і попросиш її зробити сніданок, вона __аргує_ з тобою про те, скільки яєць та ковбасок ви повинні з'їсти. Їй хвилює ваш холестерин" __

(Тоді аргументи - це значення для комбінації параметрів, які ви оголосили і вирішили передати вашій Функції)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.