Parametrų kombinavimas Python kalboje
Į tą pačią funkciją vienu metu galima
perduoti ir pavadintus, ir pozicinius parametrus.
Tai daroma naudojant simbolį *,
kuris nurodo, kad parametrai, nurodyti
jo dešinėje, turi būti laikomi pavadintais,
jei jų numatytosios reikšmės neturi būti
naudojamos.
Sukurkime funkciją, kuri
atspausdins visus parametrus konsolėje. Kintamasis
data žymės įprastą
pozicinį parametrą. Toliau po simbolio
* nurodomi du kintamieji start
ir end su numatytosiomis reikšmėmis.
Tačiau iškviečiant funkciją padarykime šiuos
kintamuosius pavadintais:
def func(data, *, start=0, end=100):
print(data, start, end)
func(1, start=2, end=3)
Kodo vykdymo rezultatas:
1 2 3
Jei pašalinsime kintamojo
start numatytąją reikšmę
ir tuo pačiu metu jį nepadarysime pavadintu parametru, bus rodoma klaida.
Taip atsitinka todėl, kad simbolis *
jau apibrėžė start kaip pavadintą
kintamąjį:
def func(data, *, start, end=100):
print(data, start, end)
func(1, 2, end=3) # rodys klaidą
Koks bus šio kodo vykdymo rezultatas:
def func(num1, num2, *, num3):
return (num1 + num2) * num3
print(func(2, 4, num3=3))
Koks bus šio kodo vykdymo rezultatas:
def func(num1, *, num2, num3):
return (num1 - num2) / num3
print(func(12, 4, num3=5))
Koks bus šio kodo vykdymo rezultatas:
def func(*, name='user1', age='18'):
return 'Vartotojo vardas yra ' + name + ', amžius yra ' + age
print(func(name='john'))