#python #parameters #arguments
#питон #параметры #аргументы
Вопрос:
Я новичок в программировании на Python и недавно я столкнулся с функциями, параметрами, аргументами и…
Я провел много исследований параметров и аргументов (даже проверил ответы на аналогичные прошлые вопросы в StackOverflow), но я не смог получить их значения.
Некоторые говорят, что параметры — это переменные, которые мы передаем функциям, когда мы их определяем, а аргументы — это значения, которые передаются в функции, как только мы передаем их функции для запуска функции.В то время как некоторые другие говорят «нет», это не так.Параметры и аргументы одинаковы и выполняют одну и ту же задачу…
Кто-нибудь может объяснить мне смысловые параметры и аргументы в понятной форме?
Считаются ли параметры и аргументы переменными?
Для каких целей мы их используем?
Пожалуйста, не объясняйте слишком сложно, я новичок.
Большое вам спасибо.
Комментарии:
1. Почти для любого определения вы найдете противоположность, которая настаивает на том, что определение неверно (или должно быть изменено в каком-то очень важном смысле слова » должно «). Не волнуйтесь, найденное вами различие в порядке вещей, хотя оно не повсеместно соблюдается (отчасти потому, что оно редко бывает очень полезным, когда вы понимаете разницу между переменными и значениями).
Ответ №1:
Согласно официальной документации:
Параметры определяются именами, которые появляются в определении функции, тогда как аргументы — это значения, фактически передаваемые функции при ее вызове. Параметры определяют, какие типы аргументов может принимать функция. Например, учитывая определение функции:
def func(foo, bar=None, **kwargs): pass
foo, bar и kwargs являются параметрами
func
. Однако при вызовеfunc
, например:func(42, bar=314, extra=somevar)
значения
42
,314
, иsomevar
являются аргументами.
Глоссарий определяет их как:
- Аргумент: значение, передаваемое функции (или методу) при вызове функции.
- Параметр: именованная сущность в определении функции (или метода), указывающая аргумент (или, в некоторых случаях, аргументы), который может принимать функция.
В Python на самом деле нет «переменных», как в некоторых других языках, — у него есть «имена», ссылающиеся на «объекты». См., например, «Code like a Pythonista» и «Факты и мифы о названиях и значениях Python».
Комментарии:
1. Спасибо, что уделили свое время. Итак, все, что вы говорите: параметр — это то, что нам нужно предоставить функции при ее определении, чтобы построить функцию? И аргумент — это то, что нам нужно поместить в круглые скобки, чтобы запустить функцию?
2. @user3722727 нам не нужно — вы можете определить функцию без параметров. Однако функция, определенная без параметров, не может принимать никаких аргументов. И если функция определяет параметры, аргументы должны быть предоставлены для тех параметров, которые не задают значения по умолчанию.
3. Значения по умолчанию? Что это такое?
4. @user3722727 например
bar=314
— если вы не укажете аргумент для этого параметра, он будет принимать значение314
по умолчанию. Вероятно, вам следует ознакомиться с документацией по определению функций и / или учебным пособием по функциям .5. Я понял. Спасибо вам за ваши ответы, а также за ваше терпение
Ответ №2:
Воспринимайте это так:
Параметр: параметр представляет собой значение, которое процедура ожидает, что вы передадите при его вызове. Объявление процедуры определяет ее параметры.
Аргумент: аргумент представляет значение, которое вы передаете параметру процедуры при вызове процедуры. Вызывающий код предоставляет аргументы при вызове процедуры.
Пример:
int add (int value1, int value2) // Here value1 and value2 are PARAMETERS.
{
return value1 value2;
}
Теперь при вызове функции
answer = add(2,3); // Here values 2 and 3 are ARGUMENTS.
То же самое относится и к Python, при объявлении они являются параметрами, при вызове они являются аргументами.
Некоторые могут отличаться от того, что я написал, но именно так это на самом деле известно в мире программирования.
Комментарии:
1. Пример кода, не относящийся к Python, вероятно, не очень полезен для OP.
2. Если бы он начал с какого-нибудь другого языка, я думаю, он бы задал тот же вопрос. 🙂