# Комбинирование параметров в 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'))`
← →
↑