Parametri koji se mogu pozvati samo pomoću ključnih reči - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

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

Постави коментар

0 Коментари