JavaRush /Курсы /Модуль 1: Python Core /Параметры функции

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

Модуль 1: Python Core
4 уровень , 8 лекция
Открыта

9.1 Параметры vs аргументы

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

Параметры — это переменные, которые перечислены в определении функции. Они представляют собой имена, которые функция использует для ссылки на передаваемые ей значения. Параметры функции служат как «заполнители» для значений, которые будут использованы в теле функции. Когда вы определяете функцию, вы описываете её параметры.


def print_info(name, age):  # name и age — это параметры
    print(f"Name: {name}, Age: {age}")

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


print_info("Alice", 30)  # "Alice" и 30 — это аргументы

Виды аргументов

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

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

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

9.2 Значения по умолчанию

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

Определение аргументов по умолчанию

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


def print_info(name, company='Unknown'):
    print(f"Name: {name}, Company: {company}")

В этом примере company имеет значение по умолчанию 'Unknown'.

  • Упрощение вызова функций: Функции с множеством параметров могут быть вызваны с указанием только наиболее важных аргументов.
  • Гибкость: Функции можно адаптировать к различным сценариям использования без изменения их кода.
  • Читаемость кода: Явное указание значений по умолчанию делает код самодокументируемым.

Важные нюансы

Неизменяемость: Значения по умолчанию для аргументов должны быть неизменяемыми типами данных, такими как числа, строки или кортежи. Использование изменяемых типов (например, списков или словарей) может привести к нежелательным побочным эффектам из-за того, что изменения в этих объектах сохраняются между вызовами функции.

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

Еще пример:


def create_user(username, is_admin=False):
    if is_admin:
        print(f"User {username} is an admin.")
    else:
        print(f"User {username} is a regular user.")

create_user("Alice")  # is_admin == False
create_user("Bob", is_admin=True)  # is_admin == True
create_user("Karl", True)  # is_admin == True

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

9.3 Передача параметров по имени

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

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


функция(параметр1 = значение, параметр2 = значение)

Этот способ особенно полезен при работе с функциями, имеющими множество параметров или параметры со значениями по умолчанию.

Преимущества передачи параметров по имени

  • Ясность и читаемость: Указание имени параметра при его вызове делает код легче понятнее для других разработчиков или при возвращении к собственному старому коду.
  • Гибкость: Параметры могут быть переданы в любом порядке, что удобно, когда функция имеет много параметров.
  • Избежание ошибок: Нет необходимости помнить порядок параметров функции, что уменьшает вероятность ошибок, связанных с неправильной передачей значений.

Примеры использования


def create_profile(name, age, job):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print(f"Job: {job}")

create_profile(age = 28, name = "John",  job = "Developer")

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

Пример 2:

Кстати, вы уже сталкивались раньше с передачей параметров по имени. В функции print(), помните?

print(1, 2, 3, 4, 5, sep="-", end="!!") 

Да, это именно тот случай 😊.

Особенности и ограничения

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

Нельзя использовать одно и то же имя параметра более одного раза при вызове функции.

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

2
Задача
Модуль 1: Python Core, 4 уровень, 8 лекция
Недоступна
НДС
НДС
2
Задача
Модуль 1: Python Core, 4 уровень, 8 лекция
Недоступна
Нашли кота
Нашли кота
Комментарии (14)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Iwan_Halliday Уровень 1
30 августа 2025
еее порода кота "собака" прокатило)))))
Iva Уровень 9
26 августа 2025
В задаче про котов, решение прям в теле урока. Ничего додумывать не нужно, ну почти. Слава тебе хоспидя. Всем удачи!
_den Уровень 63
7 февраля 2025
только у меня от этого больше путаница? - У новичков часто возникает путаница между терминами «параметры» и «аргументы» - ок, постараюсь разобраться - Параметры — это переменные, которые перечислены в определении функции. Аргументы — это конкретные значения или данные, передаваемые функции при её вызове. - непривычно их различать, но в целом понял - 9.3 Передача параметров по имени - не понял, мы же передаем аргументы в фукцию! *Пример 1*: В этом примере параметры передаются не по порядку, но каждому из них явно присваивается значение, что делает вызов функции более гибким и понятным. - аргументы... *Пример 2*: Кстати, вы уже сталкивались раньше с передачей параметров по имени. В функции print(), помните? - но... Поправьте, пожалуйста, где я затупил(
_den Уровень 63
7 февраля 2025
ответ deespeek:

термины параметры и аргументы часто используются взаимозаменяемо, но они могут иметь разные значения в зависимости от контекста. Вот основные различия:
Аргументы — это значения, которые вы передаете.
Параметры — это переменные, которые хранят эти значения внутри скрипта или функции.
впервые вижу такой акцент в разнице между параметрами и аргументами. И да, я понял разницу из определений в лекции, но дальше идут противоречия. Если это действительно важно в дальшейшем, то поделитесь подробностями пж)
_den Уровень 63
7 февраля 2025
неплохое видео https://www.youtube.com/watch?v=WLAq2-3ZyMc да, в нем есть разделение, но из него только более понятно, что разница в параметрах и аргументах пригодится только на собесах, технически нет раницы (поправьте, если ошибаюсь)
SWK Уровень 26
17 марта 2025
Надо было начать как-то так: "Вообще-то, это синонимы..." А потом уже; "Параметрами их скорее назовут, рассуждая о функции изнутри, а аргументами там, где функцию вызывают."
bbirdy Уровень 13
6 мая 2025
Aleksandra Tribun Уровень 14
21 января 2025
При проверке задач, тренажёр сломался и выдал: не выполнены условия задачи. Перезагрузка страницы помогла, решение зачтено. Видимо я настолько кринжово написала код, что программа решила: "да ну нафиг её решения смотреть".
Reghina Уровень 19
25 февраля 2025
если имеется в виду задача про котов, то там выдает не выполнены условия задачи даже если условия выполнены частично
Марина Уровень 14
15 января 2025
в моей голове общая стоимость=цена(с или без налога)*количество товара. пришлось смотреть в решение, чтобы поверить, что здесь общая стоимость не учитывает количество товара. немного некорректные названия переменных, как для меня.
7 августа 2024
total_cost:.3f про эту окнструкцию ни слова нигде не было
Zlopyhatel Уровень 0
15 декабря 2024
мы просто ноем, а нам дают знания. и пусть пукан бомбит и пусть мы этого не знали - мы все время что то не знаем. так у них написано...
Dmitry Ryabov Уровень 23
20 января 2025
Ну тут Вы конечно не правы. Эта конструкция встречалась на 4 уровне в лекции 4, подзаголовок Форматирование чисел
Dmitry Ryabov Уровень 23
20 января 2025
Zlopyhatel, эффективность обучения достигается путём погружения в задачу. Порой для этого необходимо немножко выйти за границы лекций и узнать что-то самостоятельно. Не вижу здесь чего-то плохого. Тут дают хороший скелет, на который самому уже необходимо нарастить мясо. В реальных задачах никто не будет всё разжёвывать до мелочей, многое приходится додумывать самому.