Module (19%)
Section (75%)

Смешивание позиционных и именованных аргументов

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

Если Вы немного подумаете, Вы наверняка догадаетесь, почему.

Чтобы показать Вам, как это работает, мы будем использовать следующую простую функцию с тремя параметрами:

def adding(a, b, c): print(a, "+", b, "+", c, "=", a + b + c)

Ее цель - вычислить и вывести сумму всех своих аргументов.

Функция при вызове следующим образом:

adding(1, 2, 3)

выведет:

1 + 2 + 3 = 6

output


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


Конечно же, Вы можете заменить такой вызов вариантом с передачей по имени, например:

adding(c = 1, a = 2, b = 3)

Наша программа выведет такую строку:

2 + 3 + 1 = 6

output


Обратите внимание на порядок значений.


Теперь попробуем смешать оба стиля.

Посмотрите на вызов функции ниже:

adding(3, c = 1, b = 2)

Давайте проанализируем его:

  • аргумент (3) для параметра a передается позиционным способом;
  • аргументы для c и b указаны с помощью имен.

вот, что Вы увидите в консоли:

3 + 2 + 1 = 6

output


Будьте осторожны и остерегайтесь ошибок. Если Вы попытаетесь передать более одного значения одному аргументу, все, что Вы получите, - это ошибка выполнения.

Посмотрите на вызов ниже - кажется, мы дважды пытались задать значение a:

adding(3, a = 1, b = 2)

Ответ Python:

TypeError: adding() got multiple values for argument 'a'

output


Посмотрите на код ниже. Такой код полностью корректен, но не имеет особого смысла:

adding(4, 3, c = 2)

Все правильно, но оставить только один именованный аргумент выглядит немного странно - как Вы думаете?


Code

def adding(a, b, c):
print(a, "+", b, "+", c, "=", a + b + c)

# Call the adding function here.
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×