Различия между параметрами и аргументами (Visual Basic)
В большинстве случаев процедура должна содержать некоторые сведения об обстоятельствах, в которых она была вызвана. Процедура, выполняющая повторяющиеся или общие задачи, использует разные сведения для каждого вызова. Эти сведения состоят из переменных, констант и выражений, которые передаются процедуре при ее вызове.
Чтобы передать эти сведения процедуре, процедура определяет параметр, а вызывающий код передает аргумент этому параметру. Параметр можно рассматривать как место для парковки, а аргумент — как автомобиль. Точно так же, как различные автомобили могут припарковаться на стоянке в разное время, вызывающий код может передавать разные аргументы в один и тот же параметр каждый раз, когда вызывает процедуру.
Параметры
Параметр представляет значение, которое процедура ожидает передать при его вызове. Объявление процедуры определяет ее параметры.
При определении Function процедуры или Sub необходимо указать список параметров в круглых скобках сразу после имени процедуры. Для каждого параметра укажите имя, тип данных и механизм передачи (ByVal или ByRef). Можно также указать, что параметр является необязательным. Это означает, что вызывающему коду не нужно передавать для него значение.
Имя каждого параметра выступает в качестве локальной переменной в процедуре. Имя параметра используется так же, как и любая другая переменная.
Аргументы
Аргумент представляет значение, передаваемое параметру процедуры при вызове процедуры. Вызывающий код предоставляет аргументы при вызове процедуры.
При вызове Function процедуры или Sub список аргументов включается в круглые скобки сразу после имени процедуры. Каждый аргумент соответствует параметру в одной позиции в списке.
В отличие от определения параметра аргументы не имеют имен. Каждый аргумент является выражением, которое может содержать ноль или больше переменных, констант и литералов. Тип данных вычисляемого выражения обычно должен соответствовать типу данных, определенному для соответствующего параметра, и в любом случае он должен быть преобразован в тип параметра.
См. также раздел
- Процедуры
- Подпрограммы
- Процедуры функций
- Процедуры свойств
- Процедуры операторов
- Практическое руководство. Определение параметра для процедуры
- Практическое руководство. Передача аргументов в процедуру
- Передача аргументов по значению и по ссылке
- Рекурсивные процедуры
- Перегрузка процедур
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
В чем разница аргумента и параметра?
Параметром (формальным параметром) функции называется переменная в функции, которая будет содержать передаваемое снаружи входное значение.
Аргументом называют фактическую переменную или выражение, значение которого используется как входное значение при вызове функции.
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);
Аргумент (программирование)
У этого термина существуют и другие значения, см. Аргумент.
- В программировании: аргумент функции — значение (число, указатель и т. д.), передаваемое функции, а также символьное имя (название переменной) в тексте программы, выступающее в качестве идентификатора этого значения.
Также аргументом является -s.
Внешние ресурсы
- Аргументы командной строки в Unix (рус.)
- Концепции языков программирования
Wikimedia Foundation . 2010 .
- Эмо (значения)
- Позорный столб и колодки
Смотреть что такое «Аргумент (программирование)» в других словарях:
- Параметр (программирование) — У этого термина существуют и другие значения, см. Параметр (значения). Параметр в программировании принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр в каком качестве… … Википедия
- Конструктор (программирование) — У этого термина существуют и другие значения, см. Конструктор. В объектно ориентированном программировании конструктор класса (от англ. constructor, иногда сокращают ctor) специальный блок инструкций, вызываемый при создании объекта.… … Википедия
- Функция (программирование) — У этого термина существуют и другие значения, см. функция. Функция в программировании это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от… … Википедия
- Объектно-ориентированное программирование на Python — Объектно ориентированное программирование на Python программирование на Python с использованием парадигмы ООП: с самого начала Python проектировался как объектно ориентированный язык программирования[1]. Содержание 1 Введение 1.1 … Википедия
- Замыкание (программирование) — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. У этого термина … Википедия
- Шаблон (программирование) — Шаблоны (англ. template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например типам данных, размерам буферов, значениям по умолчанию). В C++ возможно создание шаблонов функций и … Википедия
- Объектно-ориентированное программирование на Питоне — С самого начала Питон проектировался как объектно ориентированный язык программирования [1]. Содержание 1 Введение 1.1 Принципы ООП … Википедия
- Итератор (программирование) — Итератор (от англ. iterator) объект, позволяющий программисту перебирать все элементы коллекции без учёта особенностей её реализации. Итератор иногда также называют курсором, особенно если речь идет о базе данных. В Обероне он… … Википедия
- Операция (программирование) — У этого термина существуют и другие значения, см. операция. Операция конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются… … Википедия
- Присваивание (программирование) — Содержание 1 Определение присваивания 1.1 Алгоритм работы оператора присваивания … Википедия
Параметры и аргументы функции
В программировании функции могут не только возвращать данные, но также принимать их, что реализуется с помощью так называемых параметров, которые указываются в скобках в заголовке функции. Количество параметров может быть любым.
Параметры представляют собой локальные переменные, которым присваиваются значения в момент вызова функции. Конкретные значения, которые передаются в функцию при ее вызове, будем называть аргументами. Следует иметь в виду, что встречается иная терминология. Например, формальные параметры и фактические параметры. В Python же обычно все называют аргументами.
Рассмотрим схему и поясняющий ее пример:
Когда функция вызывается, то ей передаются аргументы. В примере указаны глобальные переменные num1 и num2 . Однако на самом деле передаются не эти переменные, а их значения. В данном случае числа 100 и 12. Другими словами, мы могли бы писать mathem(100, 12) . Разницы не было бы.
Когда интерпретатор переходит к функции, чтобы начать ее исполнение, он присваивает переменным-параметрам переданные в функцию значения-аргументы. В примере переменной a будет присвоено 100, b будет присвоено 12.
Изменение значений a и b в теле функции никак не скажется на значениях переменных num1 и num2 . Они останутся прежними. В Python такое поведение характерно для неизменяемых типов данных, к которым относятся, например, числа и строки. Говорят, что в функцию данные передаются по значению. Можно сказать, когда a присваивалось число 100, то это было уже другое число, не то, на которое ссылается переменная num1 . Число 100 было скопировано и помещено в отдельную ячейку памяти для переменной a .
На самом деле переменная a в момент присваивания значения может указывать на то же число 100, что и переменная num1 . Однако, когда a в результате вычислений в теле функции получает новое значение, то связывается с другой ячейкой памяти, потому что числа относятся к неизменяемым типам данных, то есть нельзя переписать значение содержащей их ячейки. При этом переменная num1 остается связанной со старым значением.
Существуют изменяемые типы данных. Для Питона, это, например, списки и словари. В этом случае данные передаются по ссылке. В функцию передается ссылка на них, а не сами данные. И эта ссылка связывается с локальной переменной. Изменения таких данных через локальную переменную обнаруживаются при обращении к ним через глобальную. Это есть следствие того, что несколько переменных ссылаются на одни и те же данные, на одну и ту же область памяти.
Необходимость передачи по ссылке связана в первую очередь с экономией памяти. Сложные типы данных, по сути представляющие собой структуры данных, обычно копировать не целесообразно. Однако, если надо, всегда можно сделать это принудительно.
Произвольное количество аргументов
Обратим внимание еще на один момент. Количество аргументов и параметров совпадает. Нельзя передать три аргумента, если функция принимает только два. Нельзя передать один аргумент, если функция требует два обязательных. В рассмотренном примере они обязательные.
Однако в Python у функций бывают параметры, которым уже присвоено значение по-умолчанию. В таком случае, при вызове можно не передавать соответствующие этим параметрам аргументы. Хотя можно и передать. Тогда значение по умолчанию заменится на переданное.
def cylinder(h, r = 1): side = 2 * 3.14 * r * h circle = 3.14 * r**2 full = side + 2 * circle return full figure1 = cylinder(4, 3) figure2 = cylinder(5) print(figure1) print(figure2)
131.88 37.68
При втором вызове cylinder() мы указываем только один аргумент. Он будет присвоен переменной-параметру h . Переменная r будет равна 1.
Согласно правилам синтаксиса Python при определении функции параметры, которым присваивается значение по-умолчанию должны следовать (находиться сзади) за параметрами, не имеющими значений по умолчанию.
А вот при вызове функции, можно явно указывать, какое значение соответствует какому параметру. В этом случае их порядок не играет роли:
… figure3 = cylinder(10, 2) figure4 = cylinder(r=2, h=10) print(figure3) print(figure4)
В данном случае оба вызова – это вызовы с одними и теми же аргументами-значениями. Просто в первом случае сопоставление параметрам-переменным идет в порядке следования. Во-втором случае – по ключам, которыми выступают имена параметров.
В Python определения и вызовы функций имеют и другие нюансы, рассмотрение которых мы пока опустим, так как они требуют более глубоких знаний, чем у нас есть на данный момент. Скажем лишь, что функции может быть определена так, что в нее можно передать хоть ни одного аргумента, хоть множество:
def few_or_many(*a): print(a) few_or_many(1) few_or_many('1', 1, 2, 'abc') few_or_many()
(1,) ('1', 1, 2, 'abc') ()
Опять же, судя по скобкам, здесь возникает упомянутый в прошлом уроке кортеж.
Практическая работа
Напишите программу, в которой определена функция int_test , имеющая один параметр. Функция проверяет, можно ли переданное ей значение преобразовать к целому числу. Если можно, возвращает логическое True . Если нельзя – False .
В основной ветке программы присвойте переменной s то, что пользователь вводит с клавиатуры. Вызовите функцию int_test() , передав ей значение s . Если функция возвращает истину, преобразуйте строку s в число n и выведите на экран значение n + 10 .
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование