Reference - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

Reference

11.6 Reference 

Više puta do sada sam ti napomenuo kako kada kreiraš neki objekat (najjednostavnije je metodom dodele nekoj promenljivoj), promenljiva nije sam taj objekat, već je ona u stvari samo pokazivač (referenca) prema tom objektu, koji se nalazi u nekom delu memorije računara. To se zove imenovanje (definisanje, ili na engleskom - binding) objekta. To možeš da zamisliš kao kreiranje prečice za neki program, na desktopu tvog računara - možeš da kreiraš, izbrišeš ili kopiraš prečicu, ali program na koji se odnosi prečica i dalje ostaje na nekom drugom mestu na koje je ta prečica vodila, drugim rečima, PREČICA NE PREDSTAVLJA SAM TAJ PROGRAM.
U suštini, ne bi trebao da brineš mnogo o ovome, ali sa pojavom složenih struktura podataka, koje sam ti pokazao u ovom poglavlju tutorijala, pojavljuju se i nuspojave, koje ne možeš da ignorišeš, a koje nastaju prilikom upotrebe referenci za promenljive strukture podataka, pa treba da budeš obazriv.
Sada ću ti pokazati jednostavan primer sa listama:
>>> prijatelji = ['maja', 'deja', 'caca', 'maca'] 
>>> imena = prijatelji 
>>> imena 
['maja', 'deja', 'caca', 'maca'] 
>>> prijatelji 
['maja', 'deja', 'caca', 'maca'] 
>>> 
Kreirao sam neku listu u koju sam stavio imena mojih prijatelja, a potom sam shvatio da mi treba i lista koja sadrži neka imena, a koju bih želeo da na neki drugi način menjam, nezavisno od liste prijatelji. Naivno sam kreirao novu listu, tako što sam stavio znak = i sa desne strane, da ne bih morao sve ponovo da kucam (Hej, pa i ja sam lenj!), naveo već postojeću listu.
Sa sadašnjim znanjem naslućuješ – to je greška! Ja zapravo nisam kreirao novu listu, već sam samo kreirao novu referencu ka već postojećoj listi!
>>> del imena[1] 
>>> imena 
['maja', 'caca', 'maca'] 
>>> prijatelji 
['maja', 'caca', 'maca'] 
>>> 
Ups... Brisanjem jednog objekta iz liste imena, uklonio sam i jednog prijatelja.... Hmmm.... Pa ja to ne želim!
Ali, kako da postignem ono što želim? Ja želim da to budu dve nezavisne liste, a ne jedna, koja ima dva imena?
Pa lako! Upotrebićemo operaciju isecanja:
>>> imena = prijatelji[:] 
>>> del imena[0] 
>>> imena 
['caca', 'maca'] 
>>> prijatelji 
['maja', 'caca', 'maca'] 
>>> 
Eto! Jednostavnim isecanjem sam napravio kopiju liste sa kojom sad mogu da radim šta mi je volja, a da se ne plašim da ću na bilo koji način uticati na drugu listu.
Pouka ovog dela je da treba da zapamtiš da ako želiš da praviš kopiju liste ili nekog promenljivog tipa podataka, onda moraš da koristiš operaciju isecanja. Ako pogrešiš, i samo dodeliš drugo ime varijable, oba imena će se "odnositi" na isti objekat, i to bi moglo da izazove mnoge probleme.

11.5 Skup Indeks 11.7 Ponovo
stringovi

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

0 Коментари