Preskoči na glavni sadržaj

Lokalne promenljive

9.2 Lokalne promenljive 

Do sada bi trebalo da si shvatio svrhu pisanja funkcija – to su mini-programi koje koristimo u svojim programima da nešto ne bi morali da pišemo hiljadu puta. I pošto su one, na neki način, izdvojene od ostatka, programa, mi komuniciramo sa njima tako što ih pozivamo prosleđujući neke argumenate u zagradama. U trenutku pisanja samog programa, nas više apsolutno ne zanima šta se u toj funkciji dešava, već samo želimo nešto od nje.
Shodno tome, radi konačnog razjašnjavanja cele zbrke, dajem ti jedan realan primer. Zamisli funkciju da je neka kuća, u kojoj žive neki ljudi, koji nešto rade. Kada pozivamo funkciju, mi u suštini kucamo na vrata kuće. Mi želimo da nam ljudi iz te kuće nešto urade, zato im i dajemo nešto (argumente) i oni nam to urade. Ali kakav je odnos tih ljudi u kući prema spoljašnjem svetu?
>>> spoljasnjost = 'toplo' 
>>> def kuca(): 
...     print(spoljasnjost) 
... 
>>> kuca() 
toplo 
>>> 
Aha, ljudi u toj kući vide kakvo je vreme napolju, ali...
>>> prolaznik = 'zove taksi' 
>>> def kuca(): 
...     prolaznik += ' telefonom' 
...     print(prolaznik) 
... 
>>> kuca() 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
  File "<stdin>", line 2, in kuca 
UnboundLocalError: local variable 'prolaznik' referenced before assignment 
>>> 
Šta bi? Ovo je značajno – ljudi u kući (funkcija) mogu da vide spoljašnji svet, ali ne mogu da ga menjaju, ne mogu da ga pozovu unutra da čovek upotrebi telefon! Zapravo, to je i suština – mogu da gledaju kroz prozor, ali ne mogu da pipnu nešto iz tog „spoljašnjeg“ sveta, a na njihovu sreću, spoljašnji svet ne može, takođe, nit da vidi, nit da pipne ono što je u kući. Jedini način komunikacije „kuće“ sa spoljnim svetom je kroz vrata (pozivanje funkcije). Iako nije sasvim tačno, ovoga treba da se na ovom mestu držiš kao pijan plota.
Takođe, kada definišemo neku promenljivu unutar bloka funkcije, ta promenljiva nije povezana ni na jedan način sa nekom drugom promenljivom koja ima isto takvo ime, i koju koristimo izvan te funkcije. Imena promenljivih u funkciji su lokalnog karaktera - tj. koriste se, i postoje samo u toj funkciji. Ovo se, inače, naziva scope - delovanje imena promenljive. Sve promenljive su efikasne samo unutar bloka u kom smo ih definisali.
Budući da je sve ovo možda konfuzno, nastavimo paralelu sa našom kućom kao funkcijom. Zamisli da si na nekoj planini na zimovanju, skijaš se. Napolju je temperatura na kojoj mali Tuxovi (Tux – Pingvin, simbol Linuxa) padaju u nesvest. Posle nekog vremena vidiš neku kolibu, doskijaš do nje u želji da se ugreješ, pokucaš na vrata... Naravno, posle toga znaš da moraš odskijati do hotela... Da vidimo šta se dešava....
>>> temperatura = 'Tux se smrznuo!' 
>>> def koliba(temperatura): 
... # Uneli smo malo zime sa sobom 
...     print(temperatura) 
... # A da zapalimo malu vatru? 
...     temperatura = 'toplo' 
...     print(temperatura) 
... 
>>> print(temperatura) 
Tux se smrznuo! 
>>> # idemo u kolibu 
... 
>>> koliba(temperatura) 
Tux se smrznuo! 
toplo 
>>> # A da li nam je toplo i kada krenemo nazad u hotel? 
... 
>>> print(temperatura) 
Tux se smrznuo! 
>>> 
Na žalost, temperaturu smo mogli da promenimo samo u kolibi, čim smo krenuli nazad prema hotelu, opet je isto, hladno (drugim rečima, lokalna promenljiva nije uticala na globalnu, koja je ostala ista kao i pre pozivanja funkcije). Zaista čudno da, paleći vatru u kolibi, nismo uspeli da utičemo na klimu napolju. Uh... Mrzim zimu... brrrr.... Kako to da običnom vatricom nisam uspeo da vratim leto i izazovem globalno zagrevanje? Čekaj, stani malo... GLOBALNO zagrevanje?! Hmmm.... Mislim da se javlja neki mali Zloćko u meni.....

9.1 Parametri i
argumenti funkcija
Indeks 9.3 Globalne
promenljive

Diskusija

Ovo je mesto za predloge, sugestije, kritike....
Zato, druže, hitno pošalji komentar

Najčitanije ovog meseca

Vremenske nepogode

Vremenske nepogode

📧 Kako na responzivnim Blogger-ovim temama izmeniti "Subscribe" dugme? 📧

📧 Kako na responzivnim Blogger-ovim temama 📧 📧 izmeniti 📧 📧 "Subscribe" dugme? 📧 2018-ta je godina i neke stvari zaista lagano klize u istoriju. Jedna od tih stvari, koja je veoma korisna za blogove i pisanja na njima, je mogućnost da čitaoci primaju Vaše nove tekstove na svoju email adresu. Popularni "subscribe" lagano biva zamenjen sa opcijama primanja obaveštenja sa blogova koje pratite direktno u pretraživaču ili čak i u samom operativniom sistemu (notifikacije). Međutim, popularni RSS feed-ovi nisu mrtvi, i zbog toga je važno imati među svojim čitaocima i ljude koji vole da koriste svoju elektronsku poštu da bi pratili sadržaje sa blogova. Jedna od popularnijih platformi za pisanje blogova Blogger je prošle godine predstavila novi set responzivnih tema. Iako savremene, ovim temama nedostaje mnogo opcija za prilagođavanje. Jedna od opcija je i izmena teksta na dugmadima. Iz tog razloga, u ovom tutorijalu će biti pokazano kako se može promeniti tekst i sa…

Definisanje podrazumevanih vrednosti argumenata funkcije

9.4 Definisanje podrazumevanih vrednosti argumenata funkcije  Sada kada smo naučili da je najpametniji način komunikacije programa sa funkcijom kroz argumente prilikom pozivanja te funkcije, možemo malo da „uđemo“ i u tu filozofiju vezanu za argumenate i parametre. Prvi slučaj je sledeći: zamisli da imaš neku funkciju koja predstavlja tvoj doručak. Ti voliš da jedeš kajganu, i zato bi bilo prilično glupo da ti svaki dan kažeš – daj mi za doručak kajganu, umesto toga, brže i pametnije je da sedneš za sto i da dobiješ kajganu. Jedino ako ti je kajgane već preko glave, ti kažeš – daj mi za doručak sendvič! Na istu foru, u nekim funkcijama ćeš želeti da njeni parametri budu opcioni i da funkcija koristi neke podrazumevane (default) vrednosti, za slučaj da ne želimo da konstantno prosleđujemo iste vrednosti za njih. To postižemo definisanjem podrazumevanih vrednosti argumenata i to na sledeći način: prilikom definisanja funkcije mi definišemo podrazumevanu vrednost parametra tako što dodam…

Novi mesec.... Nova tema....

Novi mesec.... Nova tema.... Poštovani čitaoci i pratioci, Verovatno ste već primetili novi izgled bloga. Došlo je "ono" vreme u godini kada se nešto menja. a mnogi ljudi (uključujući i mene) se pitaju: "Zašto baš ja moram sada (nešto) da menjam?". Razloga za "za" i razloga "protiv" uvek ima mnogo. Gotovo isto onoliko koliko i ima izgovora za "za", kao i za "protiv". Ali, eto...
Možda se izgled bloga ne bi ni menjao da nisam u privatnom životu bio opterećen nekim problemima, čije rešavanje ne zavisi od mene? Zapravo, upravo je to bio glavna pokretačka snaga za ovaj korak. Kao što mnogi udaraju u vreće za boks kada su nervozni, tako sam i ja "udarao" po tastaturi kako bi se izbacila frustracija (oko nekih drugih stvari), ali ne beskorisno, već kreirajući nešto, za šta se nadam da će Vam se svideti. Ali, nije samo to.... Prošla tema bloga (prilagođeni Contempto) je imala jedan nedostatak. Naime, u kombinaciji sa AdSe…

Kako podesiti sigurnu konekciju i kako se izboriti sa mešovitim sadržajem na Vašem Blogger blogu?

Kako podesiti sigurnu konekciju i kako se izboriti sa mešovitim sadržajem na Vašem Blogger blogu? U 2018g. je pojam kompjuterske sigurnosti dovoljno sazreo, kako među ljudima koji kreiraju programe i sadržaje, tako i među običnim korisnicima. Kreatori programa koriste sve raspoložive resurse kako bi krajnjeg korisnika osigurali od raznih internet pretnji, najčešće putem vizuelnih ili audio obaveštenja, blokiranja određenih sadržaja i sl. Sa druge strane, kreatori sadržaja najčešće svojom nepažnjom ili neznanjem dovedu sebe u položaj da njihov sadržaj bude označen kao nesiguran. Za krajnjeg korisnika je najbitniji jedan od prvih znakova bezbednosti - sigurna konekcija. On tu sigurnu konekciju prepoznaje tako što se ona odvija putem linkova koji počinju sa https:// (umesto pređašnjih http://). Podaci koji se šalju putem ovakvih linkova su osigurani TLS protokolom, tj oni su (između ostalog) enkriptovani. Koliko je važno da vaša konekcija bude sa prefiksom https govori i činjenica da na…

Dalja unapređivanja programa

13.6 Dalja unapređivanja programa Jupi.... Sada imam program koji zadovoljava sve korisnike, sada napokon mogu odahnuti... Težak trud se baš isplati, zar ne? GREŠKA! Ne može se odahnuti nikada. Ukoliko si predstavio svoj program širokom auditorijumu, više nema stajanja. Ti si sebe ubacio u tzv software development process – a to je običan ciklus, u kome ti moraš da slušaš korisnike, usavršavaš sebe i svoj softver i implementiraš te ideje, itd.
Na primer, ova četvrta verzija programa je sasvim zadovoljavajuća skripta za rad većine korisnika – ali onih koji i nemaju specifične zahteve, pa čak i zarad njihovog (i tvog) zadovoljstva uvek postoji prostor za poboljšanja. Recimo, moja prva zamerka bi bila ta, što je program previše „pričljiv“ - tj. kada god ga pokrenem moram da unesem i izvore i destinaciju. To je za mene glupo, treba mi neki program koji će zapamtiti moj izbor, tako da kada god se pokrene sam uradi sve, bez da me „davi“ (na primer, hoću da podesim moj OS da pokreće ovaj pro…

R.I.P. Dolores O'Riordan

R.I.P. Dolores O'Riordan Prošle nedelje (u ponedeljak 15. januara 2018g.) nas je zatekla vest o smrti Dolores O'Riordan pevačici i frontmenu benda The Cranberries. Ona je premuinula pod nerazjašnjenim okolnostima u Londonskom hotelu "London Hilton on Park Lane" u kom je odsela za potrebe snimanja. Imala je 46 godina i za sobom je ostavila neizbrisiv trag, naročito sa bendom The Cranberries. Ovo je prilika da se podsetimo pesama po kojima ćemo je pamtiti. Najbolje pesme Opus grupe The Cranberries (1990. - 2013g. i 2009. - do danas) je za mnoge u svoje vreme bio prilično revolucionaran. U trenucima kada se svet i Evropa dramatično menjaju, pucajući po nekim starim šavovima, u momentima kada su se stvarali konflikti, ratovi, socijalna raslojavanja... stvarao se osećaj da je potrebno poslati poruku, i to ne bilo kakvu, već poruku koja se jasno i glasno čuje! The Cranberries su bili jedan od bendova koji je to uspešno i učinio. U svakom slučaju, njihovim pesmama nije ned…

Kako kreirati kontakt formu na zasebnoj stranici u Blogger-u?

Kako kreirati kontakt formu na zasebnoj stranici u Blogger-u? Blogger je jedna od najboljih platforma na internetu namenjena kreatorima raznoraznih sadržaja. Ipak neka rešenja, koja Blogger implementira u sebi, najčešće ne zadovoljavaju korisničke potrebe. Jedna od tih problematičnih stavki je i formular za kontakt autora bloga. U Blogger-u je to rešeno preko gedžeta koji možemo postaviti bilo gde u našoj temi, a najčešće ga autori stavljaju u bočnu traku. Problem kod ovog pristupa je što će kontakt forma da bude prisutna na svakoj strani koju posetilac otvori. Iako je praktično, ovo rešenje ne prati savremene trendove, gde se smatra da ukoliko korisnik već ima mogućnost ostavljanja komentara ispod teksta, ne treba ga opterećivati sa još jednim poljem za kontakt, jer ga to jednostavno - zbunjuje! Umesto takvog rešenja, većina današnjih blogova i sajtova, formular za kontakt postavljaju ili na posebnu stranu ili kao integralni deo stranice koja daje informacije o samom tom blogu (popu…

Dodela vrednosti

7.4 Dodela vrednosti U Pythonu se dodela vrednosti obično odvija sa leva na desno. To znači da se operacije sa istim prvenstvom izvršavanja izvršavaju sa leve na desnu stranu. Na primer, 2 + 3 + 4, Python izvršava kao (2 + 3) + 4, tj prvo sabira ono što se nalazi skroz sa leve strane, pa zatim ide ka desnoj strani izraza. Neki operateri poput dodele vrednosti promenljivoj (=), imaju dodelu vrednosti koja ide sa desne, prema levoj strani tj a = b = c, Python tretira kao a = (b = c) .

7.3 Promena redosleda
izvršavanjaIndeks7.5 Matematički izrazi
u našem programu

Četvrta verzija programa

13.5 Četvrta verzija programaProblem: Jedan moj korisnik ima problem. Pogledaj šta mu se desi kada odjedanput pokuša da ubaci više fajlova u naš program: ./beckap_v3.py Unesi imena fajlova koje želiš da bekapuješ Unesi reč "kraj" za kraj unosa. Veran Bekaper v3.0 >>> '/home/lenj/Desktop/Novi rad/Test Kodovi' '/home/lenj/Desktop/Novi rad/Primeri Python kodova.odt' '/home/lenj/Desktop/Novi rad/Problemator.odt' '/home/lenj/Desktop/Novi rad/Problemator.pdf' '/home/lenj/Desktop/Novi rad/Skripta za Python.odt' Unesi reč "kraj" za kraj unosa. Veran Bekaper v3.0 >>> kraj OPREZ! Putanja /home/lenj/Desktop/Novi rad/Test Kodovi' '/home/lenj/Desktop/Novi rad/Primeri Python kodova.odt' '/home/lenj/Desktop/Novi rad/Problemator.odt' '/home/lenj/Desktop/Novi rad/Problemator.pdf' '/home/lenj/Desktop/Novi rad/Skripta za Python.odt NE POSTOJI! Želite li da unesete novu putanju, pritisn…