Parametri koji se mogu pozvati samo pomoću ključnih reči

9.7 Parametri koji se mogu pozvati samo pomoću ključnih reči 

Ponekad nam je neophodno da definišemo neke parametre unutar funkcije, koji bi, u trenutku pozivanja funkcije, bili dostupni samo preko ključne reči, i ni na koji drugi način (u suprotnom funkcija izbacuje grešku!). U kom slučaju nam je to potrebno? Pa u slučaju da nam je taj parametar važan i neophodan. Uzmimo prethodni primer u kojem dobijamo cenu kupljenih artikala. Mi nemamo para, ali imamo kreditnu karticu. Da li imamo i dozvoljeni minus? Ako nemamo, onda i ne možemo kupiti ništa, zar ne? Ovakve parametre definišemo posle parametara definisanih sa zvezdama:
>>> def platio(kredit = 0, *cene, dozvoljen_minus): 
...     platio = kredit 
...     for cena in cene: 
...             platio += cena 
...     if dozvoljen_minus: 
...             print(platio) 
...     else: 
...             print('Ne možeš jesti ništa ovaj mesec!') 
... 
>>> povrce = 1500 
>>> voce = 1000 
>>> komunalno = 1000 
>>> struja = 8000 
>>> platio(povrce, voce, komunalno, struja, dozvoljen_minus = False) 
Ne možeš jesti ništa ovaj mesec! 
>>> platio(povrce, voce, komunalno, struja, dozvoljen_minus = True) 
11500 
>>> 
Ukoliko nismo poneli karticu:
>>> platio(povrce, voce, komunalno, struja) 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: platio() needs keyword-only argument dozvoljen_minus 
>>> 
Dobijamo grešku, baš kako smo se i nadali....
Kako ovo funkcioniše: 
Definisanjem parametra posle parametara sa zvezdicom, je rezultiralo da prilikom poziva funkcije imamo argument koji mora biti pozvan sa ključnom reči. Ako ovom argumentu nismo prosledili neku podrazumevanu vrednost prilikom poziva funkcije, funkcija nam izbacuje grešku jer joj nismo isporučili argument sa ključnom reči, i potom prekida program, jer ne može da nastavi, kao što sam pokazao u prethodnom primeru.
Ako želite da imate argument koji se pozivaju samo ključnim rečima, ali nema potrebe za parametrima definisanim sa zvezdicama, onda jednostavno koristimo zvezdu bez upotrebe bilo kog imena, kao što je, na primer, def total(inicijal=5, *, ekstra_broj) .
Ili:
>>> def poverljivo(*, pristup): 
...     if pristup: 
...             print('Ovo je poverljiva poruka.') 
...     else: 
...             print('Nije Vam dozvoljeno....') 
... 
>>> poverljivo(pristup = True) 
Ovo je poverljiva poruka. 
>>> poverljivo() 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: poverljivo() needs keyword-only argument pristup 
>>> 

9.6 VarArgs Indeks 9.8 Naredba return

Primjedbe

Popularno ovog meseca

Gde pronaći novosti sa facebook stranica nakon velike promene koja ga je zadesila?

Dva načina da vratite svoj Windows 10 na fabričke vrednosti

Kako preuzeti video koji je neko postavio na facebook-u bez upotrebe dodatnih programa?

Više neće biti moguć besplatan prelazak na Windows 10

Prijateljski meč ŠK "Titel" - ŠK "Bukovac"

Tu je novi Qt creator 4.4.0!

Kako manipulisati Windows licencom pomoću slmgr komande?

Fake poet

Da li je poželjno biti anoniman na internetu (ili se predstavljati punim imenom i prezimenom)?

Organizacija foldera i fajlova u Linux fajl sistemu