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

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

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

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

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

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

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

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

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' 

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

В чём различия аргументов и параметров функции?

Довольно частый вопрос, который задают новички на форумах и тематических сайтах. Параметры и аргументы функции — где и когда уместно применять то или иное понятие. На самом деле здесь всё очень просто. Рассмотрим несколько примеров на PHP.

Параметр функции

Параметр функции — это переменная, которая используется в функции при её объявлении (в круглых скобках).

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

// Объявление функции функция (параметр1, параметр2) < // Выполняемый код >

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

name = $name; $this->email = $email; > >

Есть класс User , который содержит метод public function createUser(string $name, string $email) , который в свою очередь ожидает на вход параметры: $name и $email .

Аргумент функции

Аргумент функции — это выражение/значение, которое передается в функцию (метод) при её (его) вызове. Аргумент(ы) указывается в круглых скобках при вызове функции.

// Вызов функции функция (аргумент1, аргумент2);

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

$user = new User(); // Вызов функции и передача в неё аргументов $user->createUser('Вася', 'Пупкин');

Здесь мы создаём экземпляр класса User (объект) и передаём в метод createUser() аргументы: Вася и Пупкин .

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

Пример

развернуть

setName($name); $this->setEmail($email); > /** * Параметр $name * @param string $name */ private function setName(string $name): void < $this->name = $name; > /** * Параметр $email * @param string $email */ private function setEmail(string $email): void < $this->email = $email; > /** * Функция без параметров * @return string */ public function getEmail(): string < return $this->email; > /** * Функция без параметров * @return string */ public function getName(): string < return $this->name; > >
// Создание объекта $user = new User(); // Вызывавем функцию с аргументами $user->createUser('Вася', 'Пупкин'); // Вызов функции без аргументов. Сама функция никаких параметров не требует $user->getName(); $user->getEmail();

JavaScript: Параметры и аргументы функции

Параметры функции играют роль локальных переменных в теле функции. При указании параметров функции ключевое слово var или let использовать не нужно, JavaScript объявляет их в качестве локальных переменные автоматически. Параметров может быть указано любое количество:

function foo(a, b, c) < . >// a, b, c – параметры функции

При вызове функции, ей могут передаваться значения, которыми будут инициализированы параметры. Значения, которые передаются при вызове функции называются аргументами . Аргументы, указываются через запятую:

function foo(a, b) < var sum = a + b; alert(sum); >foo(5, 7); // 12

Когда при вызове функции ей передаётся список аргументов, эти аргументы присваиваются параметрам функции в том порядке, в каком они указаны: первый аргумент присваивается первому параметру, второй аргумент – второму параметру и т. д.

Если число аргументов отличается от числа параметров, то никакой ошибки не происходит. В JavaScript подобная ситуация разрешается следующим образом:

    Если при вызове функции ей передаётся больше аргументов, чем задано параметров, «лишние» аргументы просто не присваиваются параметрам. Допустим, имеется следующее объявление функции:

function foo(a, b, c) < // . >

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

Значения параметров по умолчанию

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

function foo(greeting = "Привет", name = "Гость") < console.log(greeting + ", " + name + "!"); >foo(); // "Привет, Гость!"

Передача значения undefined в качестве аргумента воспринимается как отсутствие аргумента:

function foo(greeting = "Привет", name = "Гость") < console.log(greeting + ", " + name + "!"); >foo(undefined, "Гомер"); // "Привет, Гомер!"

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

function foo(a, b = 2) < console.log(a === arguments[0]); console.log(b === arguments[1]); >foo(1); // true // false

Так как в функцию передаётся только один аргумент, arguments[1] имеет значение undefined , поэтому сравнение console.log(b === arguments[1]); в результате даёт false .

Если в функции используются параметры со значениями по умолчанию, то использование объявления строгого режима внутри функции приведёт к синтаксической ошибке:

function foo(a = 1) < "use strict"; // Ошибка >

Значением по умолчанию может быть как простое, так и сложное выражение:

function foo(a = 1, b = 2 + 2) < console.log(a, b); >foo(1); // 1 4

Значение предыдущего параметра можно использовать в качестве значения по умолчанию для любого из последующих параметров:

function foo(a, b = a) < console.log(a, b); >foo(1); // 1 1

Попытка использовать значение последующего параметра в качестве значения по умолчанию для предшествующего параметра вызовет ошибку:

function foo(a = b, b) < console.log(a, b); >foo(undefined, 1); // Ошибка

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

Попытка использовать значение переменной, объявленной в теле функции, в качестве значения по умолчанию для параметров функции, также вызовет ошибку:

function foo(a = b) < var b = 5; console.log(a); >foo(); // Ошибка

Дополнительный параметр

Параметр с префиксом . называется дополнительным (или необязательным). Дополнительный параметр указывается в качестве последнего параметра. Дополнительный параметр – это массив, в который сохраняются лишние аргументы, когда количество переданных аргументов превышает количество параметров:

function foo(a, b, . args) < console.log(args); >foo(1, 2, 3, 4, 5); // 3, 4, 5

С этой темой смотрят:

  • Объявление и вызов функции
  • arguments и this
  • Инструкция return
  • Рекурсия

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru | razumnikum.ru

Разница между аргументом и параметром

Многие программисты используют термины «параметр» и «аргумент» как синонимы, но оба они имеют разные значения. В этом посте будет обсуждаться разница между аргументом и параметром.

Параметры обычно называют аргументами, но они совершенно разные. Согласно с Wikipedia, “Параметр — это переменная особого типа, используемая в подпрограмме для ссылки на один из фрагментов данных, предоставленных в качестве входных данных для подпрограммы. Эти фрагменты данных являются значениями аргументов, с которыми будет вызываться/вызваться подпрограмма”.

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

Например, рассмотрим следующее определение функции:

int add ( int x , int y ) < return x + y ;

The add() функция принимает два параметра, x а также y . Если функция вызывается как add(2, 3) , то 2, 3 — аргументы.

Стоит отметить, что переменные могут быть аргументами. Если функция вызывается, как показано ниже, то переменные a а также b оба являются аргументами add() функция, а не значения 2, 3.

Важные точки:

  1. Параметр также называется формальный параметр или же формальный аргумент, и аргумент часто называют фактические аргументы или же фактические параметры.
  2. Параметр является необязательным в некоторых языках программирования, а некоторые языки программирования позволяют указать аргумент по умолчанию в объявлении функции. Это означает, что при вызове функции вызывающая сторона может опустить этот аргумент.
  3. Параметр имеет имя, тип данных и механизм вызова (вызов по ссылке или вызов по значению). Напротив, аргумент — это выражение, которое не имеет имени, но может быть переменной, константой или литералом.
  4. Областью действия параметра является сама функция, и он служит локальной переменной внутри функции.
  5. Количество аргументов в вызове функции должно соответствовать общему количеству параметров в определении функции. Единственным исключением из этого правила являются функции со списками параметров переменной длины.
  6. Тип данных аргументов в вызове функции должен совпадать с типом данных параметров в определении функции.
  7. Если параметр передается по значению, его изменение внутри функции не меняет соответствующий аргумент в вызывающей программе. Однако, если он передается по ссылке, значения соответствующего аргумента могут быть изменены в вызывающем объекте.

Вот и вся разница между аргументом и параметром.

Использованная литература: Параметр — Википедия

Оценить этот пост

Средний рейтинг 4.84 /5. Подсчет голосов: 70

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

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

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