Перейти к содержимому

Где находятся параметры а где аргументы функции

  • автор:

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

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

Параметры представляют собой локальные переменные, которым присваиваются значения в момент вызова функции. Конкретные значения, которые передаются в функцию при ее вызове, будем называть аргументами. Следует иметь в виду, что встречается иная терминология. Например, формальные параметры и фактические параметры. В 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 у функций бывают параметры, которым уже присвоено значение по-умолчанию. В таком случае, при вызове можно не передавать соответствующие этим параметрам аргументы. Хотя можно и передать. Тогда значение по умолчанию заменится на переданное.

При втором вызове cylinder() мы указываем только один аргумент. Он будет присвоен переменной-параметру h . Переменная r будет равна 1.

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

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

В данном случае оба вызова – это вызовы с одними и теми же аргументами-значениями. Просто в первом случае сопоставление параметрам-переменным идет в порядке следования. Во-втором случае – по ключам, которыми выступают имена параметров.

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

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

Практическая работа

Напишите программу, в которой определена функция int_test , имеющая один параметр. Функция проверяет, можно ли переданное ей значение преобразовать к целому числу. Если можно, возвращает логическое True . Если нельзя – False .

В основной ветке программы присвойте переменной s то, что пользователь вводит с клавиатуры. Вызовите функцию int_test() , передав ей значение s . Если функция возвращает истину, преобразуйте строку s в число n и выведите на экран значение n + 10 .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В чем разница между аргументом и параметром в языке программирование C#?

insolor's user avatar

Нурсултан's user avatar

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

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

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

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

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

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

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

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

Чем отличаются параметры и аргументы функций

Динамические значения, которые передаются в JavaScript-функцию, могут меняться при вызове этой функции в разных местах кода. Мы называем эти данные параметрами и аргументами, причем не все хорошо помнят, чем одни отличаются от других.

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

Функции в JavaScript

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

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

Вот пример функции без всяких параметров и аргументов:

Сначала идет объявление функции add . Затем она вызывается (последняя строчка кода). Результат работы этой функции — число 5.

Но вся красота функций раскрывается, когда мы передаем в них какие-нибудь значения.

Как использовать параметры и аргументы в функции

Давайте рассмотрим следующий код:

Если сравнивать с функцией из предыдущего примера, здесь мы ввели x и y , а числа 2 и 3 написали в другом месте. Вот эти x и y — параметры функции add , а 2 и 3 — аргументы.

Параметр — это одна из переменных в функции. Данные, которые вы передаете в параметры функции при ее вызове, называются аргументами.

Когда функция add вызывается с аргументами 2 и 3 (в коде — add(2, 3) ), числа 2 и 3 присваиваются параметрам x и y соответственно. То есть в этой функции x будет заменен на 2, а y — на 3.

Если функция вызывается с другими аргументами, x и y получают другие значения. Параметры — это своего рода плейсхолдеры для аргументов функции.

Мощь аргументов

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

У первой функции, add() , есть два параметра, x и y . Эта функция возвращает сумму двух параметров.

Вторая функция, multiply() , имеет три параметра, a , b и c . Внутри этой функции объявляются две переменные, num1 и num2 . Переменная num1 будет хранить результат работы функции add(a, b) , а num2 — результат add(b, c) . В конечном итоге функция multiply вернет значение num1 , умноженное на значение num2 .

Функция multiply вызывается с тремя аргументами — 1, 2 и 3.

add(a, b) превращается в add(1, 2) и возвращает 3.

add(b, c) превращается в add(2, 3) и возвращает 5.

После этого переменная num1 получает значение 5, а num2 — 5.

num1 * num2 возвращает 15.

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

От редакции Techrocks. Также предлагаем почитать:

Заключение

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

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

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

Школа онлайн с государственным аттестатом