12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

56 Funkcijedef zbroj(*br):rez = 0for x in br: rez += xreturn rezprint zbroj(*d.values( ))Dakako, argumenti oblika *niz ili **rj mogu se prenositi i kad se poziva funkcija koja ne koristisli£ne oblike u svojim formalnim parametrima.6.5.3 Prostor imenaFormalni parametri funkcije zajedno s bilo kakvim varijable koje su povezane (pridruºbom ili nekomdrugom povezuju¢om naredbom) u funkcijskom tijelu, tvore lokalni prostor imena funkcije (eng. localnamespace), takožer poznat i kao lokalni doseg (eng. local scope). Svaka od ovih varijabli zove se lokalnavarijabla funkcije. Varijable koje nisu lokalne zovu se globalne varijable. Ako lokalna varijabla unutarfunkcije ima isto ime kao i globalna varijabla, kada god se to ime spomene u tijelu funkcije, koristise lokalna, a ne globalna varijabla. Za ovakav pristup kaºe se da lokalna varijabla sakriva globalnuvarijablu istog imena kroz cijelo tijelo funkcije.6.5.4 Naredba 'global'Kako je prethodno opisano, bilo koja varijabla koja je povezana unutar tijela funkcije je lokalna varijablafunkcije. Ako pak funkcija treba re-povezati neke od svojih globalnih varijabli, prva naredba funkcijemora biti:global identifikatorigdje su identifikatori jedan ili vi²e identikatora odvojenih zarezima. Identikatori popisani uglobal naredbi odnose se na globalne varijable koje funkcija treba re-povezati. Na primjer, _count semoºe ubaciti u funkciju koriste¢i klju£nu rije£ global i globalnu varijablu, kako slijedi:_count = 0def counter( ):global _count_count += 1return _countBez global naredbe, funkcija counter() bi podigla UnboundLocalError iznimku, jer bi _count bioneinicijalizirana (nepovezana) lokalna varijabla. Takožer, iako naredba global omogu¢uje ovakvu vrstuprogramiranja, to ipak nije niti elegantno niti preporu£ljivo. Naredba global nije potrebna ako tijelofunkcije jednostavno koristi globalnu varijablu, uklju£uju¢i mijenjanje objekta povezanog na varijablu,dakako ako je objekt promjenljiv. Naredba global treba se koristiti samo onda kada tijelo funkcijere-povezuje globalnu varijablu. Stvar je stila, a i preporuke, da se naredba global ne koristi osim kadje to apsolutno nuºno.6.6 Ugnjeºžene funkcijeNaredba def unutar tijela funkcije denira ugnjeºženu funkciju (eng. nested function), a funkcija £ijetijelo uklju£uje def je poznata kao vanjska funkcija (eng. outer function) s obzirom na ugnjeºženu.Kôd unutar tijela ugnjeºžene funkcije moºe pristupiti (ali ne i re-povezati) lokalne varijable vanjskefunkcije, takožer poznate i kao slobodne varijable ugnjeºžene funkcije.Najjednostavniji na£in da se dopusti ugnjeºženoj funkciji pristup vanjskim vrijednostima nije oslanjatise na ugnjeºžene dosege varijabli ili upotreba global naredbe, nego prijenos vanjskih vrijednosti

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!