Комбинирование параметров в Python
В одну и ту же функцию можно одновременно передать
именованные и позиционные параметры. Делается это
с помощью символа *
, который
обозначает, что параметры указанные справа от него
следует считать именованными, если их значения по
умолчанию не нужно использовать.
Давайте создадим функцию,
которая будет выводить все параметры
в консоль. Переменная data
будет обозначать
обычный позиционный параметр. Далее после
символа *
задаются две переменные
start
и end
с дефолтными значениями.
Однако при вызове функции сделаем
эти переменные именованными:
def func(data, *, start=0, end=100):
print(data, start, end)
func(1, start=2, end=3)
Результат выполнения кода:
1 2 3
Если же убрать дефолтное значение переменной
start
и в то же время убрать
ее как именованный параметр,
то выведется ошибка. Это происходит потому,
что символ *
уже определил
start
как именованную
переменную:
def func(data, *, start, end=100):
print(data, start, end)
func(1, 2, end=3) # выведет ошибку
Каким будет результат выполнения следующего кода:
def func(num1, num2, *, num3):
return (num1 + num2) * num3
print(func(2, 4, num3=3))
Каким будет результат выполнения следующего кода:
def func(num1, *, num2, num3):
return (num1 - num2) / num3
print(func(12, 4, num3=5))
Каким будет результат выполнения следующего кода:
def func(*, name='user1', age='18'):
return 'Username is ' + name + ' age is ' + age
print(func(name='john'))