Аргументи функције Питхон (подразумевано, кључна реч и произвољно)

У Питхону можете дефинисати функцију која узима променљиви број аргумената. У овом чланку ћете научити да дефинишете такве функције користећи подразумеване, кључне речи и произвољне аргументе.

Видео: Аргументи функције Питхон: позициони, кључне речи и подразумевано

Аргументи

У поглављу кориснички дефинисане функције научили смо о дефинисању функције и њеном позиву. У супротном, позив функције резултираће грешком. Ево примера.

 def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")

Оутпут

 Здраво Моника, добро јутро!

Овде функција greet()има два параметра.

Будући да смо ову функцију позвали са два аргумента, она ради глатко и не добијамо никакву грешку.

Ако га позовемо са различитим бројем аргумената, тумач ће приказати поруку о грешци. Испод је позив овој функцији са једним и без аргумената заједно са њиховим одговарајућим порукама о грешкама.

 >>> греет ("Моница") # само један аргумент ТипеЕррор: греет () недостаје 1 потребан позициони аргумент: 'мсг'
 >>> греет () # нема аргумената ТипеЕррор: греет () недостају 2 обавезна позицијска аргумента: 'наме' и 'мсг'

Аргументи променљиве функције

До сада су функције имале фиксни број аргумената. У Питхону постоје и други начини за дефинисање функције која може да узима променљив број аргумената.

Три различита облика ове врсте су описана у наставку.

Питхон подразумевани аргументи

Аргументи функције могу имати подразумеване вредности у Питхону.

Аргументу можемо доделити подразумевану вредност помоћу оператора доделе (=). Ево примера.

 def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")

Оутпут

Здраво Кате, добро јутро! Здраво Бруце, како си?

У овој функцији параметар nameнема подразумевану вредност и потребан је (обавезан) током позива.

С друге стране, параметар msgима подразумевану вредност "Good morning!". Дакле, није обавезно током позива. Ако је дата вредност, она ће заменити подразумевану вредност.

Било који број аргумената у функцији може имати подразумевану вредност. Али када имамо подразумевани аргумент, сви аргументи с његове десне стране такође морају имати подразумеване вредности.

То значи рећи, не-задани аргументи не могу следити задате аргументе. На пример, да смо претходно дефинисали заглавље функције као:

 деф греет (мсг = "Добро јутро!", име):

Добили бисмо грешку као:

 СинтакЕррор: не-задани аргумент следи задати аргумент

Питхон Аргументи кључних речи

Када позовемо функцију са неким вредностима, те вредности се додељују аргументима према њиховом положају.

На пример, у горњој функцији greet(), када смо је позвали као greet("Bruce", "How do you do?"), вредност "Bruce"се додељује имену аргумента и слично "How do you do?"мсг.

Питхон омогућава позивање функција помоћу аргумената кључних речи. Када функције позивамо на овај начин, редослед (положај) аргумената може се променити. Сви следећи позиви горњој функцији су сви важећи и дају исти резултат.

 # 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?") 

Као што видимо, позиционе аргументе можемо мешати са аргументима кључних речи током позива функције. Али морамо имати на уму да аргументи кључних речи морају следити позиционе аргументе.

Имати позициони аргумент после аргумената кључне речи резултираће грешкама. На пример, функција позива на следећи начин:

 greet(name="Bruce","How do you do?")

Доћи ће до грешке:

 СинтакЕррор: аргумент који није кључна реч иза аргумента кључне речи

Питхон арбитрарни аргументи

Понекад не знамо унапред број аргумената који ће бити прослеђени у функцију. Питхон нам омогућава да ову ситуацију решавамо позивима функција са произвољним бројем аргумената.

У дефиницији функције користимо звездицу (*) пре имена параметра да означимо ову врсту аргумента. Ево примера.

 def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")

Оутпут

 Здраво Моница Здраво Луке Здраво Стеве Здраво Јохн

Овде смо позвали функцију са више аргумената. Ови аргументи се умотавају у скуп пре него што се проследе у функцију. Унутар функције користимо forпетљу за враћање свих аргумената назад.

Занимљиви Чланци...