Густариши параметрҳо дар 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'))