Пайтонда параметрларни комбинациялаш

Худди шу функцияга номланган ва позицион параметрларни бир вақтда ўтказish мумкин. Бу * белгиси ёрдамида бажарилади, у ўзидан ўнгда кўрсатилган параметрларни номланган деб ҳисоблаш кераклигини билдиради, агар уларнинг сустки қийматлари ишлатиш шарт эмас бўлса.

Барча параметрларни консолга чиқарувчи функция яратайлик. 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'))