Аргумент в программировании — значение, которое передается в функцию, чтобы та использовала его в вычислениях. Например, если функция складывает числа a и b, то конкретные значения a и b будут аргументами.
Что такое аргумент в программировании
Аргументы есть в синтаксисе функций в большинстве языков программирования. Правда, терминология может немного различаться в зависимости от языка. Мы поговорим про это подробнее ниже.
Разработчики пользуются аргументами, чтобы разнообразить возможности функции и сделать ее более универсальной. Возможность передавать в функцию какие-то значения — одна из ключевых в программировании. Без нее разработка была бы совсем другой.
В некоторых языках при описании функции сразу задаются типы ее аргументов. Например, a должно быть числом.
Для чего нужны аргументы функции
Переиспользование функции. Если в функцию нельзя подставлять произвольные значения, она становится менее универсальной. Ее нельзя использовать повторно, потому что единственные возможные значения, с которыми можно работать, — те, которые функция сгенерировала сама. То есть, например, функция сложения всегда будет складывать числа 3 и 5, а передать в нее что-нибудь новое будет нельзя. Аргументы решают эту проблему. Они передают в функцию значения, и та может работать с ними — например, складывать произвольные числа, которые отправит в нее разработчик при запуске.
Удобство. Технически можно применять вместо аргументов глобальные переменные — такие, которые видно во всем коде, включая функции. Но и тогда в функцию будет сложнее подставлять новые значения: придется менять глобальную переменную. К тому же это приводит к путанице в коде и может стать причиной ошибок.
Использование функций с аргументами делает код более стройным и понятным. Сразу видно, откуда взялось то или иное значение. Если переменные называются понятными именами, их применение в качестве аргументов улучшает читаемость. А читаемость важна в коммерческой разработке, где над одним кодом может в разные периоды работать несколько человек.
Возможность усложнять выражения. Бывают ситуации, когда внутри функции инициируется и запускается другая функция, или в ней реализуется сложное выражение. Аргументы пригодятся и здесь. Например, можно передать результат какого-то выражения как аргумент или отправить аргумент «родительской» функции во вложенную. Такое вполне возможно и часто используется в разработке, в итоге даже сложные вещи могут реализоваться меньшим количеством кода.
Отличия между аргументами и параметрами
Есть еще одно сходное слово — параметр функции. Их легко перепутать с аргументами, и в некоторых языках понятия действительно взаимозаменяемы. Но общее правило такое:
- параметр — переменная, которая передается в функцию при ее описании. Она абстрактная и пока ничего не значит, просто говорит функции, каким должен быть будущий аргумент;
- аргумент — непосредственное значение, которое передается в функцию при вызове. Оно подставляется вместо параметра и должно соответствовать правилам, по которым описан параметр (например, принадлежать к определенному типу).
Иными словами, аргумент — фактическая реализация абстрактного параметра.
Но многое зависит от правил конкретного языка — мы упоминали об этом выше. Например, в Python и то, и другое принято называть аргументами. В некоторых языках оба понятия называют параметрами — формальными и фактическими.
Пример. Мы описываем функцию func(a, b), где a и b — абстрактные значения, параметры. А потом вызываем ее как func(name, surname), где name и surname — аргументы. С ними будут производиться действия, описанные в функции, они подставятся вместо a и b в ее коде.
Как передаются аргументы
Существуют два способа передавать аргументы. В некоторых языках по умолчанию используется только один способ, в других можно указать способ при описании параметра. Еще есть языки, где способ передачи аргументов зависит от их типа, и языки с другими правилами.
По значению. В этом случае аргумент становится как бы копией переменной, которую отправили в функцию при ее вызове. Например, в качестве аргумента в функцию отправили переменную something, которая есть во внешнем коде. Функция создаст копию something и внутри себя будет работать с ней. А изначальная переменная something во внешнем коде не изменится. В таких случаях говорят, что в функцию передали значение.
По ссылке. В этом случае все наоборот. Переменная не копируется — в функцию отправляется ее изначальный экземпляр, то есть, ссылка на участок памяти, где она хранится. Отсюда и название. Соответственно, если отправить по ссылке переменную something и в теле функции изменить ее значение — во внешнем коде оно тоже изменится.
Разницу между двумя способами важно помнить. Ошибка в передаче аргумента может привести к потере важных данных или другим неприятным последствиям. Поэтому при изучении языка лучше сразу уточнить, как по умолчанию передаются переменные — и как, если нужно, можно это изменить.
Что можно делать с аргументами
Использовать в коде. Когда мы пишем функцию, мы используем параметры и с их помощью описываем, что функция будет делать с аргументами. При вызове аргументы подставятся вместо параметров, и с ними выполнятся все действия, которые мы описывали: сложение, вычитание, разные преобразования и так далее.
Подставлять в выражения. Если внутри функции используется какое-то сложное выражение, в него можно подставить параметр — при вызове на его месте, соответственно, будет аргумент. Так и достигается универсальность функций.
Передавать во вложенные функции. Бывает так, что функция внутри себя вызывает другую функцию. А иногда и сама себя — называется рекурсией. В таком случае функция спокойно может отправить во внутреннюю функцию аргументы, которые получила сама. Это нормально, и так многие делают. Более того: можно отправить не аргумент в чистом виде, а результат выражения с ним, например, не x, а x — 1.
Как пользоваться аргументами
Функции с аргументами обычно изучаются очень рано, на первых этапах обучения программированию. Даже обычная функция сложения чисел или вывода текста на экран нуждается в аргументах.
При использовании встроенных функций тоже пользуемся аргументами. Самая известная первая программа — print(‘Hello, world’) — использует встроенную функцию print (в разных языках может называться по-разному). А ‘Hello, world’ — аргумент. На его место можно подставить любой другой текст — и функция выведет его.
Конечно, со временем использование аргументов становится сложнее, изучаются новые возможности и особенности. Но основы закладываются еще в самом начале.
0 комментариев