Говоря о методах устно, я никогда не уверен, использовать ли слово аргумент, параметр или что-то еще. В любом случае другие люди знают, что я имею в виду, но что правильно и какова история терминов?
Я программист на C#, но мне также интересно, используют ли люди разные термины на разных языках.
Для справки, я самоучка без опыта работы в области компьютерных наук. (Пожалуйста, не говорите мне читать Код завершен, потому что я прошу это для блага других людей, у которых еще нет экземпляра чудесной книги Стив МакКоннелл.)
Похоже, что по общему мнению, эти термины можно использовать как синонимы в командной среде. За исключением, возможно, тех случаев, когда вы определяете точную терминологию; тогда вы также можете использовать «аргумент / параметр формальный» и «аргумент / параметр действительный» для устранения неоднозначности.
Их можно использовать взаимозаменяемо, за исключением тех случаев, когда вы пытаетесь описать, как работают параметры, как передаются аргументы и т. д. На этом этапе полезна точная терминология (которую иногда бывает сложно выразить).
Существует как минимум две незакрытых, не зависящих от языка версии этого вопроса: stackoverflow.com/questions/3176310/… и stackoverflow.com/questions/427653/arguments-or-parameters. Есть еще одна версия этого вопроса для C#; Я запросил слияние.
@LordTorgamus: Я добавил к этому не зависящий от языка, так как плакат также спрашивал, используют ли другие языковые сообщества ту же терминологию.
Это подвижная цель. Когда я начинал работать в IT много лет назад, это всегда был «формальный аргумент, фактический параметр». Судя по приведенным здесь ответам, сейчас явно наоборот.
@Mechanicalsnail Это важно, поскольку терминология не универсальна. Например, Фортран говорит, что «фиктивные аргументы» для «параметров» и «параметры» - это то, что другие называют «константами».
Здесь мы говорим о функциях языка программирования, но соответствует ли этот ответ параметрам командной строки или аргументам командной строки? (например, см. справочную страницу getopt, где сказано: «Каждый параметр классифицируется как короткий вариант, длинный вариант, аргумент для параметра или параметр, не являющийся параметром»).
Рад, что вы упомянули Стива МакКоннелла. Я узнал еще об одном парне, который разбирается в программном обеспечении вместе с Робертом Мартином.
Я думаю, что независимо от того, находитесь ли вы в официальной среде или нет, вы должны стремиться использовать правильные термины. Я думаю, это довольно просто. Когда вы вызываете метод, вы передаете аргументы. Когда вы определяете метод, вы определяете параметры, которые будут принимать аргументы из вызова метода / функции. аргумент - независимая переменная, связанная с функцией и определяющая значение функции. параметр - предел или граница, определяющая объем конкретного процесса или действия.
это хороший ответ, потому что он кладет конец дискуссии и снова сосредотачивается на работе. Я согласен, что они оба делают одно и то же, но на разных языках у них разные имена. Это просьба ко всем молодым писателям, пишущим на новые языки, хотя бы один раз упомянуть, например, * function(arguments) or function(argument1, argument2, ..) *





Параметр - это переменная в объявлении функции.
Аргумент - это фактическое значение этой переменной, которое передается функции.
Эти языки обычно ссылаются на список аргументов / параметров, переданный методу, как *args или ARGV, а не *params :-)
*params будет именем переменной, которая предназначена для хранения имен параметров (возможно, используется для самоанализа).
@karatedog И это полностью соответствует этому различию. Параметры именуются во время объявления, аргументы известны только во время вызова. Синтаксис *args объявляет параметрargs, значение которого является списком (имя и тип, известные во время объявления) аргументы (номер которого известен только во время вызова).
Параметр - это то, что вы должны заполнить при вызове функции. То, что вы вкладываете в это, является аргументом.
Просто установите: аргумент переходит в параметр, аргумент - это значение параметра.
Немного подробнее о: http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments
Параметр - это переменная в определении метода. Когда вызывается метод, аргументы - это данные, которые вы передаете в параметры метода.
public void MyMethod(string myParam) { }
...
string myArg1 = "this is my argument";
myClass.MyMethod(myArg1);
Аллитерирующая мнемоника, которая может помочь: аргументы актуальны. ;)
В ответе упоминается, что «Параметр - это переменная в определении метода», но было бы лучше сказать «объявление метода» [если кто-то делает различие между «объявлением» и «определением»]
«Вы определяете параметры и приводите аргументы».
параметр => когда мы определяем функцию, аргумент => когда мы вызываем этот метод. (ИСПРАВИТЕ МЕНЯ, ЕСЛИ Я НЕПРАВИЛЬНО.)
Но даже если приведенный выше код кажется правильным, конечно, myParam технически является аргументом при использовании в теле MyMethod (и параметре в подписи)?
@nashwan myParam был бы аргументом, если бы он напрямую использовался для вызова другого метода в MyMethod (например, в public void MyMethod(string myParam) { AnotherMethod(myParam) }myParam является параметром MyMethod и аргументом AnotherMethod).
@Prageeth нет функции в java. только методы
Аргумент, переданный функции / методу, сохраняется в ее параметре.
ну, когда вы «вызываете» функцию, вы делаете «аргумент», верно?
Есть ли какая-нибудь литература, которая впервые определила эти термины и установила это значение для информатики?
Параметры - это Имена. Аргументы - это ценности.
Я думаю: «Как я буду спорить с этой функцией на этот раз?» - с ней можно спорить разными способами (приводить разные аргументы в разных вызовах).
Второстепенный момент - в книгах по Java основной метод является основным (String [] args). Вместо этого он должен быть основным (String [] params).
Это мне помогает: это не main (paramc, paramv), НО, СОВЕРШЕННО main (argc, argv).
@nandan Нам не нужно указывать переменную в объявлении метода. Достаточно только типа данных
параметры функции / метода описывает вам значения, которые он использует для вычисления своего результата.
аргументы функции - это значения, присвоенные этим параметрам во время конкретного вызова функции / метода.
В Википедии уже есть статья на эту тему (см. Параметр), которая определяет и различает термины параметр и аргумент. Короче говоря, параметр является частью сигнатуры функции / процедуры / метода, а аргумент - это фактическое значение, предоставленное для параметра во время выполнения и / или на сайте вызова.
В статье Википедии также говорится, что эти два термина часто используются как синонимы (особенно, когда речь идет о коде неформально):
Although parameters are also commonly referred to as arguments, arguments are more properly thought of as the actual values or references assigned to the parameter variables when the subroutine is called at runtime.
Учитывая следующий пример функции в 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 за объяснение того, как они обычно используются, а также за их формальные определения, а также за упоминание общего использования «формальных» и «фактических» аргументов / параметров, чтобы различать их без двусмысленности.
Это отличное объяснение, но его почти невозможно понять по сравнению с простотой концепции. Параметр - это то, что принято, аргумент - это то, что вызывается. Это улица с односторонним движением.
Термины в некоторой степени взаимозаменяемы. Различие, описанное в других ответах, более правильно выражается с помощью терминов формальный параметр для имени, используемого внутри тела функции, и параметр для значения, предоставленного на сайте вызова (формальный аргумент и аргумент также являются общими).
Также обратите внимание, что в математике термин аргумент гораздо более распространен, а параметр обычно означает нечто совершенно иное (хотя параметр в параметрическом уравнении по сути является аргумент для двух или более функций).
Но опять же, термин аргумент также перегружен, по крайней мере, в комплексном анализе.
У меня есть параметр с утверждением, что они взаимозаменяемы. ;)
Или даже проще ...
Аргументы!
Параметры отсутствуют!
Этот пример может помочь.
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;
}
У них обоих нет большой разницы в использовании в C, используются оба термина на практике. В основном аргументы часто используются с функциями. Значение, переданное с оператором вызова функции, называется аргументом, а параметром будет переменная, которая копирует значение в определении функции (вызывается как формальный параметр).
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 - фактическими аргументами.
Или может быть проще запомнить вот так, в случае необязательных аргументов для метода:
public void Method(string parameter = "argument")
{
}
parameter - параметр, его значение, "argument" - аргумент :)
Допустим, вы авиакомпания. Вы строите самолет. Вы устанавливаете в него сиденья. Затем вы заполняете самолет пассажирами и куда-то отправляете. Пассажиры (точнее, его некая пространственно-временная версия) высаживаются. На следующий день вы повторно используете тот же самолет и те же места, но на этот раз с другими пассажирами.
Самолет - это ваша функция.
Параметры сиденья.
Аргументы - пассажиры, которые садятся на эти места.
Аргумент - это экземпляр параметра.
Это объяснение, которое мне давным-давно дал другой программист, и я подумал, что оно очень ясное и краткое. Я разместил это здесь по этой причине.
При редактировании меня часто пугает то, как люди забывают: структурные языки основаны на естественных языках.
«Параметр» - это заполнитель. Они устанавливают формат ответа на устном языке. По определению, это участник звонка, ограничивающий ответ.
«Аргумент» - это рассматриваемая позиция. Вы аргументируете свое мнение: вы рассматриваете аргумент.
Тематическая роль аргумента - агент. Тематическая роль параметра - получатель.
Думайте о аргументе как о мужской части, делая параметр женской частью. Аргумент переходит в параметр.
В определениях используется параметр как правило. В вызовах используется аргумент как правило.
Закончите предложение, чтобы сделать его менее противоречивым.
(A) Говоря об определении:
(B) Говоря о заклинании:
(А)
(В)
Как вы понимаете, после ответа: в разговорной речи эти слова иногда дают одинаковые ответы!
Итак, как правило:
Обычно, если кому-то нужна информация о параметрах, они хотят знать больше о типе, имени переменной и т. д. Они могут запутаться, если вы приведете только пример аргументов.
The use of the terms parameters and arguments have been misused somewhat among programmers and even authors. When dealing with methods, the term parameter is used to identify the placeholders in the method signature, whereas the term arguments are the actual values that you pass in to the method.
Набор средств сертификации 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);
«Параметр» - это очень общее, широкое понятие, а «аргумент»: это очень конкретная, конкретная вещь. Лучше всего это можно проиллюстрировать на повседневных примерах:
Большинство машин принимают ввод и возвращают вывод. Например, торговый автомат принимает в качестве входных данных: деньги и возвращает: газированные напитки в качестве выходных данных. В этом конкретном случае он принимает в качестве параметра: деньги.
В чем же тогда аргумент? Что ж, если я положу 2 доллара в машину, тогда аргумент будет: 2 доллара - это очень специфический используемый ввод.
Рассмотрим автомобиль: они принимают бензин (неэтилированный бензин) в качестве входа. Можно сказать, что эти машины принимают параметры типа: бензин. Аргументом будет точный и конкретный вклад, который я вложил в свою машину. например В моем случае аргумент был бы таков: 40 литров неэтилированного бензина / бензина.
Аргумент - это конкретный и конкретный пример ввода. Предположим, моя машина принимает на вход человека и превращает его в человека, который не лжет.
Что же тогда такое аргумент? Аргументом будет конкретный человек, которого на самом деле поместили в машину. например если в машину поместить Колина Пауэлла, аргументом будет Колин Пауэлл.
Таким образом, параметром будет человек как абстрактное понятие, но аргументом всегда будет конкретный человек с конкретное имя, который вставлен в машину. Аргумент конкретен и конкретен.
Вот в чем разница. Простой.
Оставьте комментарий, и я исправлю объяснение.
System.out.println (344); vs int v = 344; System.out.println (v); что является аргументом / параметром в Java? Не могли бы вы мне помочь?
@ user12208242, возможно, задам новый вопрос по этим вещам. 344 - это аргумент. параметр println в этом случае выглядит как целое число.
В руководствах Oracle по Java это различие определяется следующим образом: «Параметры относятся к списку переменных в объявлении метода. Аргументы - это фактические значения, которые передаются при вызове метода. Когда вы вызываете метод, используемые аргументы должны соответствовать параметрам объявления по типу и порядку».
Более подробное обсуждение параметров и аргументов: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html
Когда мы создаем метод (функцию) в Java, метод вроде этого ..
data-type name of the method (data-type variable-name)
В скобках это параметры, и когда мы вызываем метод (функцию), мы передаем значение этого параметра, которые называются аргументами.
Параметры - это переменные, полученные функцией. Следовательно, они видны в объявлении функции. Они содержат имя переменной и их тип данных. Аргументы - это фактические значения, которые передаются другой функции. вот почему мы можем видеть их при вызове функции. Это просто значения без их типа данных
Параметры и аргументы
All the different terms that have to do with parameters and arguments can be confusing. However, if you keep a few simple points in mind, you will be able to easily handle these terms.
- The formal parameters for a function are listed in the function declaration and are used in the body of the function definition. A formal parameter (of any sort) is a kind of blank or placeholder that is filled in with something when the function is called.
- An argument is something that is used to fill in a formal parameter. When you write down a function call, the arguments are listed in parentheses after the function name. When the function call is executed, the arguments are plugged in for the formal parameters.
- The terms call-by-value and call-by-reference refer to the mechanism that is used in the plugging-in process. In the call-by-value method only the value of the argument is used. In this call-by-value mechanism, the formal parameter is a local variable that is initialized to the value of the corresponding argument. In the call-by-reference mechanism the argument is a variable and the entire variable is used. In the call- by-reference mechanism the argument variable is substituted for the formal parameter so that any change that is made to the formal parameter is actually made to the argument variable.
Источник: Absolute C++, Уолтер Сэвич.
То есть,
Простой:
Хороший крючок памяти
С логической точки зрения, мы говорим об одном и том же. Но я думаю, что простая метафора поможет решить эту дилемму.
Если метафоры можно назвать различными точками соединения, мы можем приравнять их к точкам подключения на стене. В этом случае мы можем рассматривать параметры и аргументы следующим образом;
Параметры - это гнезда точки подключения, которые могут иметь различную форму. Но к ним подходят только определенные типы заглушек. Аргументы будут фактическими вилками, которые будут вставлены в точки / розетки для активации определенного оборудования.
Формальные параметры функции перечислены в объявлении функции и используются в теле определения функции. Формальный параметр (любого вида) - это своего рода пробел или заполнитель, который чем-то заполняется при вызове функции.
аргумент - это то, что используется для заполнения формального параметра. Когда вы записываете вызов функции, аргументы указываются в скобках после имени функции. Когда выполняется вызов функции, аргументы подставляются для формальных параметров.
Термины вызов по стоимости и вызов по ссылке относятся к механизму, который используется в процессе подключения. В методе вызова по значению используется только значение аргумента. В этом механизме вызова по значению формальный параметр - это локальная переменная, которая инициализируется значением соответствующего аргумента. В механизме вызова по ссылке аргументом является переменная, и используется вся переменная. В механизме вызова по ссылке переменная аргумента заменяется формальным параметром, так что любое изменение, внесенное в формальный параметр, фактически вносится в переменную аргумента.
Да! Параметры и аргументы имеют разное значение, что легко объяснить следующим образом:
Функция Параметры - это имена, перечисленные в определении функции.
Функция Аргументы - это реальные значения, переданные (и полученные) функцией.
Параметры - это переменные, которые используются для хранения данных, которые передаются в функцию для использования функцией. Аргументы - это фактические данные, которые передаются в функцию при ее вызове:
// 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);
Всегда помните, что: Аргументы передаются при получении параметров.
Я обдумал это и понял, что мой предыдущий ответ был неправильным. Вот гораздо лучшее определение
{Представьте себе коробку яиц: Пачку колбасных звеньев: И горничную.} Они представляют элементы функции, необходимой для подготовки, которая называется: (используйте любое имя: допустим, кулинария - это имя моей функции).
Служанка - это метод.
(Вы должны __ вызвать_ или попросить этого метод приготовить завтрак) (Процесс приготовления завтрака - это Функция, называемый Готовка) _
Яйца и сосиски Параметры:
(потому что количество яиц и количество сосисок, которые вы хотите съесть, равно __variable_.) _
Ваше решение - аргумент:
Он представляет собой __Value_ выбранного количества яиц и / или сосисок, которые вы готовите ._
{Мнемонический}
_ «Когда вы звоните горничной и просите ее приготовить завтрак, она __ спорит_ с вами о том, сколько яиц и сосисок вам следует съесть. Ее беспокоит ваш холестерин» __
(Аргументы - это значения для комбинации параметров, которые вы объявили и решили передать своей функции)
Согласно книге Джозефа Алабахари «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
}
В некоторых человеческих языках (афайк итальянский, русский) для этих терминов широко используются синонимы.
В моем университете профессора используют оба вида имен.
Это прекрасно объяснено в Параметр (компьютерное программирование) - Википедия
Грубо говоря, параметр - это тип, а аргумент - это экземпляр.
В определении функции f(x) = x*x переменная x является параметром; в вызове функции f(2) значение `` 2 является аргументом функции.
В компьютерное программирование обычно используются два понятия параметр, которые упоминаются как параметры и аргументы - или более формально как формальный параметр и фактический параметр.
Например, в определении такой функции, как
y = f(x) = x + 2,
Икс - это формальный параметр (параметр) определенной функции.
Когда функция вычисляется для заданного значения, как в
f(3): or, y = f(3) = 3 + 2 = 5,
является фактический параметр (аргумент) для оценки определенной функцией; это заданное значение (фактическое значение), которое заменяется на формальный параметр определенной функции. (При случайном использовании термины параметр и аргумент могут быть непреднамеренно заменены местами и, следовательно, использоваться неправильно.)
Вам нужно вернуться к основам. И конструкторы, и методы имеют параметры и аргументы. Многие люди даже вызывают конструкторы особого вида методов. Так объявляется метод параметры используются:
type name(parameters){
//body of method
}
А так объявляется конструктор параметры используются:
classname(parameters){
//body
}
Теперь давайте посмотрим на пример кода, с помощью которого мы вычисляем объем куба:
public class cuboid {
double width;
double height;
double depth;
cuboid(double w,double h,double d) {
//Here w,h and d are parameters of constructor
this.width=w;
this.height=h;
this.depth=d;
}
public double volume() {
double v;
v=width*height*depth;
return v;
}
public static void main(String args[]){
cuboid c1=new cuboid(10,20,30);
//Here 10,20 and 30 are arguments of a constructor
double vol;
vol=c1.volume();
System.out.println("Volume is:"+vol);
}
}
Итак, теперь вы понимаете, что когда мы вызываем конструктор / метод объекта в каком-то месте позже в коде, мы передаем аргументы, а не параметры. Следовательно, параметры ограничены местом, где определен логический объект, но аргументы вступают в игру, когда физический объект объект фактически создается.
Параметр - это Переменная в определении функции
Аргумент - это ценить параметра
<?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);
?>
Поскольку мой фон и основная среда - C, я приведу некоторые утверждения / цитаты по этой теме из фактического стандарта C и важного справочника, также от одного из разработчиков C, который часто цитируется и обычно рассматривается как первый неофициальный стандарт C:
Язык программирования C (2-е издание) Брайана В. Кернигана и Денниса М. Ричи (апрель 1988 г.):
Page 25, Section 1.7 - Functions
We will generally use parameter for a variable named in the parenthesized list in a function definition, and argument for the value used in the call of the function. The terms formal argument and actual argument are sometimes used for the same distinction.
ISO / IEC 9899: 2018 (C18):
3.3
argument
actual argument
DEPRECATED: actual parameter
expression in the comma-separated list bounded by the parentheses in a function call expression, or a sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a function-like macro invocation.
3.16
parameter
formal parameter
DEPRECATED: formal argument
object declared as part of a function declaration or definition that acquires a value on entry to the function, or an identifier from the comma-separated list bounded by the parentheses immediately following the macro name in a function-like macro definition.
Вообще говоря, термины параметр и аргумент используются как синонимы для обозначения информации, которая передается в функцию.
Тем не менее, с точки зрения функции:
Я использую их как взаимозаменяемые ... никто еще не смеялся надо мной ... 'эта функция имеет 4 аргумента ... эта функция принимает 4 параметра'. звучит так же.