Чем параметр отличается от аргумента
Перейти к содержимому

Чем параметр отличается от аргумента

  • автор:

В чем разница аргумента и параметра?

Параметром (формальным параметром) функции называется переменная в функции, которая будет содержать передаваемое снаружи входное значение.

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

double Negate(double x)

Здесь x — параметр функции Negate .

double r = Negate(5.0); 

Здесь 5.0 — аргумент вызова функции Negate .

Таким образом, набор параметров (то есть, «переданных снаружи» переменных) функции фиксирован, а вот аргументы (то есть, выражения, значения которых попадут в эти переменные) при каждом из вызовов могут быть свои.

Впрочем, эти два термина очень часто используют в качестве синонимов. Если вы случайно употребите одно вместо другого (не на экзамене!), вас без проблем поймут.

Как подсказывает @StateItPrimitive, в C# при вызове функции можно указывать аргументы в порядке, не обязательно совпадающем с порядком параметров, если использовать именованные аргументы: предварить аргумент именем параметра. Это может быть полезно для длинных списков параметров, чтобы не держать в голове их порядок:

string ComposeName(string firstName, string lastName) < return $", "; > string fullName = ComposeName(lastName: "Hejlsberg", firstName: "Anders"); 

Или просто для лучшей читаемости текста, если смысл параметра не очевиден, исходя лишь из его типа:

await client.DownloadFile().ConfigureAwait(continueOnCapturedContext: false); 

Различия между параметрами и аргументами (Visual Basic)

В большинстве случаев процедура должна содержать некоторые сведения об обстоятельствах, в которых она была вызвана. Процедура, выполняющая повторяющиеся или общие задачи, использует разные сведения для каждого вызова. Эти сведения состоят из переменных, констант и выражений, которые передаются процедуре при ее вызове.

Чтобы передать эти сведения процедуре, процедура определяет параметр, а вызывающий код передает аргумент этому параметру. Параметр можно рассматривать как место для парковки, а аргумент — как автомобиль. Точно так же, как различные автомобили могут припарковаться на стоянке в разное время, вызывающий код может передавать разные аргументы в один и тот же параметр каждый раз, когда вызывает процедуру.

Параметры

Параметр представляет значение, которое процедура ожидает передать при его вызове. Объявление процедуры определяет ее параметры.

При определении Function процедуры или Sub необходимо указать список параметров в круглых скобках сразу после имени процедуры. Для каждого параметра укажите имя, тип данных и механизм передачи (ByVal или ByRef). Можно также указать, что параметр является необязательным. Это означает, что вызывающему коду не нужно передавать для него значение.

Имя каждого параметра выступает в качестве локальной переменной в процедуре. Имя параметра используется так же, как и любая другая переменная.

Аргументы

Аргумент представляет значение, передаваемое параметру процедуры при вызове процедуры. Вызывающий код предоставляет аргументы при вызове процедуры.

При вызове Function процедуры или Sub список аргументов включается в круглые скобки сразу после имени процедуры. Каждый аргумент соответствует параметру в одной позиции в списке.

В отличие от определения параметра аргументы не имеют имен. Каждый аргумент является выражением, которое может содержать ноль или больше переменных, констант и литералов. Тип данных вычисляемого выражения обычно должен соответствовать типу данных, определенному для соответствующего параметра, и в любом случае он должен быть преобразован в тип параметра.

См. также раздел

  • Процедуры
  • Подпрограммы
  • Процедуры функций
  • Процедуры свойств
  • Процедуры операторов
  • Практическое руководство. Определение параметра для процедуры
  • Практическое руководство. Передача аргументов в процедуру
  • Передача аргументов по значению и по ссылке
  • Рекурсивные процедуры
  • Перегрузка процедур

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Параметры vs Аргументы в ф-ции?

Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.

Объясняю на пальцах:

function sayHello(имя, фамилия) < return "Hello " + имя + ' ' + фамилия; >sayHello('Гадя', 'Петрович');

Параметры и аргументы функций#

Цель создания функции, как правило, заключается в том, чтобы вынести кусок кода, который выполняет определенную задачу, в отдельный объект. Это позволяет использовать этот кусок кода многократно, не создавая его заново в программе.

Как правило, функция должна выполнять какие-то действия с входящими значениями и на выходе выдавать результат.

При работе с функциями важно различать:

  • параметры — это переменные, которые используются при создании функции.
  • аргументы — это фактические значения (данные), которые передаются функции при вызове.

Параметры бывают обязательные и необязательные.

def f(a, b): pass 

Необязательные (со значением по умолчанию):

def f(a=None): pass 

В этом случае a — передавать необязательно.

Аргументы бывают позиционные и ключевые.

def summ(a, b): return a + b 
summ(1, 2) 
summ(a=1, b=2) 

Независимо от того как параметры созданы, при вызове функции им можно передавать значения и как ключевые и как позиционные аргументы. При этом обязательные параметры надо передать в любом случае, любым способом (позиционными или ключевыми), а необязательные можно передавать, можно нет. Если передавать, то тоже любым способом.

Подробнее типы параметров и аргументов будут рассматриваться позже.

Для того, чтобы функция могла принимать входящие значения, ее нужно создать с параметрами (файл func_check_passwd.py):

In [1]: def check_passwd(username, password): . : if len(password)  8: . : print('Пароль слишком короткий') . : return False . : elif username in password: . : print('Пароль содержит имя пользователя') . : return False . : else: . : print(f'Пароль для пользователя username> прошел все проверки') . : return True . : 

В данном случае, у функции два параметра: username и password.

Функция проверяет пароль и возвращает False, если проверки не прошли и True если пароль прошел проверки:

In [2]: check_passwd('nata', '12345') Пароль слишком короткий Out[2]: False In [3]: check_passwd('nata', '12345lsdkjflskfdjsnata') Пароль содержит имя пользователя Out[3]: False In [4]: check_passwd('nata', '12345lsdkjflskfdjs') Пароль для пользователя nata прошел все проверки Out[4]: True 

При таком определении функции надо обязательно передать оба аргумента. Если передать только один аргумент, возникнет ошибка:

In [5]: check_passwd('nata') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ipython-input-5-e07773bb4cc8> in module> ----> 1 check_passwd('nata') TypeError: check_passwd() missing 1 required positional argument: 'password' 

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *