You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6.3. Atributi funkcijskih objekata 53def vbr_rj(**kwds): return kwdsprint vbr_rj(a=23, b=42)# ispisuje se: {'a':23, 'b':42}Treba primjetiti da se tijelo funkcije vbr_rj sastoji od samo jedne jednostavne naredbe, tako da semoºe staviti u istu liniju kao i naredba def. Dakako, bilo bi jednako to£no (i moºda £itljivije) ako bi sefunkcija vbr_rj ispisala koriste¢i dvije linije umjesto jedne:def vbr_rj(**kwds):return kwdsMoºe se takožer denirati rje£nik £iji su klju£evi i vrijednosti funkcije, a onda na£initi rje£nikdvosmjernim:inverse = {sin:asin, cos:acos, tan:atan, log:exp}for f in inverse.keys( ): inverse[inverse[f]] = fNa taj na£in za odreženu funkciju moºe se brzo na¢i inverzna funkcija. ƒinjenica da su funkcijeobjekti u <strong>Python</strong>u, £esto se izraºava rije£ima da su funkcije objekti prve klase.6.3 Atributi funkcijskih objekataNaredba def denira atribute i tijelo objekta funkcije. Atribut func_name, kojem se moºe pristupiti i kao__name__, je samo£itaju¢i (engl. read-only) atribut (pa poku²aj njegovog mijenjanja podiºe iznimku)koji se odnosi na identikator kori²ten kao ime funkcije u naredbi def. Atribut func_defaults, kojise moºe ponovno povezati ili re-povezati, odnosi se na n-terac pretpostavljenih vrijednosti za slobodneparametre (ili prazan n-terac, ako funkcija nema slobodnih parametara). Jo² jedan funkcijski atribut jedokumentacijski string (engl. documentation string), takožer poznat kao docstring. Docstring atributfunkcije moºe se koristiti kao func_doc ili __doc__. Ako je prva naredba u tijelu funkcije string literal,compiler povezuje taj niz sa docstring atributom funkcije. Docstring se £esto proteºu preko nekolikozi£kih linija, te se stoga obi£no ozna£uju kao string literali unutar trostrukih navodnika. Na primjer:def zbroj(*brojevi):'''Prihvati bilo koji broj numeri£kih argumenata i vrati njihov zbrojArgumenti su n-terac ili lista od jednog ili vi²e brojeva. Izlaz je njihov zbroj. '''rez = 0for broj in brojevi: rez += brojreturn rezDokumentacijski nizovi vaºan su sadrºaj svakoga <strong>Python</strong> kôda. Njihova je uloga sli£na komentarimau bilo kojem programskom jeziku, ali im je iskoristivost ²ira, jer su dostupni pri procesu pokretanja programa(engl. runtime). Programerska okruºenja i drugi alati mogu koristiti docstring-ove funkcijskih,klasnih i modularnih objekata da podsjete programera kako koristiti te objekte. To zna£i da djelujukao pomo¢ (engl. help) programa. Da bi se docstring u£inio ²to korisnijim, trebalo bi po²tovati nekolikojednostavnih dogovora. Prva linija docstringa trebala bi biti saºeti opis svrhe funkcije, a po£injalabi s velikim slovom i zavr²avala to£kom. Unutar nje se ne bi trebalo spominjati ime funkcije, osimako ime nije rije£ iz prirodnog, govornog jezika pa dolazi kao dio opisa operacije te funkcije. Ako jedocstring protegnut preko vi²e linija, druga linija trebala bi biti prazna, a sljede¢e linije bi trebale formiratijedan ili vi²e odlomaka, odvojenih praznim linijama, koji opisuju o£ekivane argumente funkcije,potrebne uvjete, izlazne (povratne) vrijednosti, te mogu¢e nuspojave. Daljnja obja²njenja, knjiºevnereference, te primjeri kori²tenja (koji se mogu provjeriti sa doctest) mogu po slobodnom izboru slijeditiiza, prema zavr²etku docstring-a. Uz ove predenirane atribute, funkcijskom objektu mogu se dodatii drugi atributi. Da bi se stvorio atribut objekta funkcije, prikladna atributna vrijednost se nakon