Комбинирование параметров в Python

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

Давайте создадим функцию, которая будет выводить все параметры в консоль. Переменная data будет обозначать обычный позиционный параметр. Далее после символа * задаются две переменные start и end с дефолтными значениями. Однако при вызове функции сделаем эти переменные именованными:

pythondef func(data, *, start=0, end=100):
  print(data, start, end)
  
func(1, start=2, end=3)

Результат выполнения кода:

python1 2 3

Если же убрать дефолтное значение переменной start и в то же время убрать ее как именованный параметр, то выведется ошибка. Это происходит потому, что символ * уже определил start как именованную переменную:

pythondef func(data, *, start, end=100):
  print(data, start, end)
  
func(1, 2, end=3) # выведет ошибку
Задание 1

Каким будет результат выполнения следующего кода:

pythondef func(num1, num2, *, num3):
  return (num1 + num2) * num3
  
print(func(2, 4, num3=3))
Задание 2

Каким будет результат выполнения следующего кода:

pythondef func(num1, *, num2, num3):
  return (num1 - num2) / num3
  
print(func(12, 4, num3=5))
Задание 3

Каким будет результат выполнения следующего кода:

pythondef func(*, name='user1', age='18'):
  return 'Username is ' + name + ' age is ' + age
  
print(func(name='john'))