Promjenjivi i nepromjenjivi objekti u Python {EXAMPLES}
ล to je promjenjivi objekt?
Promjenjiv u Python moลพe se definirati kao objekt koji se moลพe promijeniti ili se moลพe smatrati neฤim promjenjivim u prirodi. Promjenjivo znaฤi moguฤnost izmjene ili ureฤivanja vrijednosti.
Promjenjivi objekti u Python omoguฤiti programerima da imaju objekte koji mogu mijenjati svoje vrijednosti. Opฤenito se koriste za pohranjivanje zbirke podataka. Moลพe se smatrati neฤim ลกto je mutiralo, a unutarnje stanje primjenjivo unutar objekta se promijenilo.
ล to su nepromjenjivi objekti?
Nepromjenjivi objekti u Python mogu se definirati kao objekti koji ne mijenjaju svoje vrijednosti i atribute tijekom vremena.
Ovi objekti postaju trajni nakon ลกto su stvoreni i inicijalizirani, te ฤine kritiฤni dio struktura podataka koje se koriste u Python.
Python koristi se u brojevima, torke, nizovi, zamrznuti skupovi i korisniฤki definirane klase uz neke iznimke. Ne mogu se mijenjati, a njihove vrijednosti ostaju trajne nakon ลกto se inicijaliziraju i stoga se nazivaju nepromjenjivima.
In Python, sve je objekt
u Python programskog jezika, sve se moลพe smatrati objektom koji sadrลพi popise, cijele brojeve i funkcije. Ova se znaฤajka moลพe usporediti s drugim programskim jezicima koji podrลพavaju objekte.
Ova se znaฤajka moลพe provjeriti pomoฤu a Python tumaฤ kao ลกto je prikazano u nastavku: โ
Python kodirati:
print("The following instance is an object:",isinstance(3,object))
print("Another instance for object", isinstance(True, object))
def my_func():
return "guru99"
print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Izlaz:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Unaprijediti, Python pruลพa ugraฤenu funkciju pod nazivom id koja vraฤa adresu objekta koja je prisutna u memoriji Python programski jezik.
Python kodirati:
z=200
id(z)
print("The id of object is", id(z))
Izlaz:
the id of object is 9795360
U gornjem kodu, funkcija id koja ima sintaksu kao id(obj) daje adresu obj in Python memorija. Ovdje postoji objekt pod imenom z i ima dodjelu 200. Objekt z se zatim prosljeฤuje u funkciju id kao id(z), a Python isporuฤuje adresu objekta kao 9795360.
Promjenjivi objekti u Python
U promjenjivom objektu, vrijednost objekta se mijenja tijekom odreฤenog vremenskog razdoblja.
U ovom smo primjeru objasnili promjenjive objekte u Python, a ovo koristi popise kao primjenu promjenjivih objekata kao ลกto je prikazano u nastavku: โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
mut_list[0] = 'Gurru99'
mut_list
print("The list in Python after changing value",mut_list)
Izlaz:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Kao ลกto moลพemo vidjeti u gore navedenom primjeru, promjenjivi popis in Python imali su vrijednosti 1, 2, 3. Prvi element promjenjive liste mijenja se s 1 na Guru99 i ne stvara novi objekt kada se inicijalizira nova vrijednost.
Ovdje moลพemo koristiti id metodu da je iskoristimo. Sljedeฤe ilustrira upotrebu metode id za promjenjive objekte kao ลกto je prikazano u nastavku: โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
print("the id of the list is ",id(mut_list))
mut_list[0] = 'Gurru99'
mut_list
print("The mut list in Python after changing value",mut_list)
print("the id of the list is post change in value",id(mut_list))
Izlaz
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
Sljedeฤa slika ilustrira promjenjivi objekt u Python kao ลกto je prikazano u nastavku: โ
Nepromjenjivi objekti u Python
Nepromjenjivi objekti u Python su objekti u kojima se instance ne mijenjaju tijekom razdoblja. Nepromjenjive instance odreฤenog tipa, nakon ลกto su stvorene, ne mijenjaju se, a to se moลพe provjeriti koriลกtenjem id metode Python.
Uzmimo primjer objekata cjelobrojnog tipa Python koji ilustrira koncept nepromjenjivih objekata u Python kao ลกto je prikazano u nastavku: โ
Python Code:
a=244
print("the number before change is",a)
print("the id of number before change is",id(a))
a=344
print("the number after change is",a)
print("the id of number after change is",id(a))
Izlaz
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Gore se moลพe vidjeti da postoji promjena u "a." Prouฤimo kako mehanizam funkcionira:
- Nema promjene u vrijednosti objekta kada se inicijalizira "a" s 344.
- Umjesto toga, kreira se novi objekt koji je omeฤen s "a."
- Drugi objekt dodijeljen kao 244 viลกe ne bi bio dostupan.
- Gornji primjer koristio je cjelobrojni objekt.
Na a=244 kreira se novi objekt i upuฤuje na "a" kao ลกto je prikazano u nastavku: โ
Post koristeฤi a=344, postoji novi objekt referenciran s "a". Sljedeฤi dijagram predstavlja isto: โ
Stoga, kad god doฤe do dodjele nove vrijednosti imenu tipa int, dolazi do promjene u vezivanju imena s drugim objektom. Isti princip je usklaฤen s torkama, ลพice, float i Boolean stoga se nazivaju nepromjenjivim.
Implikacije za kljuฤeve rjeฤnika Python
Rjeฤnici se mogu definirati kao ureฤene zbirke koje pohranjuju podatke u formatu kljuฤa i ne dopuลกtaju duplikate. Rjeฤnici sadrลพe jedan kljuฤ koji ima odgovarajuฤi par vrijednosti usklaฤen s njim. Oni su promjenjivi u tipovima, a njihov sadrลพaj se moลพe mijenjati ฤak i nakon njihove inicijalizacije i stvaranja.
U svakom trenutku kljuฤ pokazuje na jedan po jedan element. Kljuฤevi rjeฤnika su nepromjenjivi.
Uzmimo hipotetski scenarij kao ลกto je prikazano u nastavku: โ
a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Ishod: โ Gore navedeno Python kod ne daje nikakav izlaz, veฤ umjesto toga generira pogreลกku tipa tipa koji se ne moลพe hashirati. Ovo je hipotetska situacija i ne koristi se u Python sastavljaฤ.
Ovdje, a je definiran kao [4,6], au rjeฤniku je definiran kao x. Ovdje, b je definiran kao [5,6,7], au rjeฤniku je definiran kao y.
- Kljuฤ 'a' ima vrijednost [4,6] i dalje se inicijalizira na x.
- Kljuฤ 'b' ima vrijednost [5,6,7] koja se dalje inicijalizira u 'y' u rjeฤniku.
- Sada pretpostavimo da je vrijednost 'aโ dodaje se s 5 i 7, ลกto je kljuฤ za rjeฤnik.
- Onda je rjeฤnik mutiran, i dao bi oboje 'x' i 'y' kao vrijednosti za gornji rjeฤnik.
Razmotrite sljedeฤi scenarij kao ลกto je prikazano gore: โ
a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Stoga, kao programski jezik, Python ฤini kljuฤeve rjeฤnika nepromjenjivima, a rjeฤnici su nepromjenjivi tipovi podataka.
Iznimke u nepromjenjivosti
Meฤutim, Python pruลพa iznimke od nepromjenjivosti takve iznimke mogu se uoฤiti za tip objekta tuple. Torka moลพe biti kombinacija promjenjivih i nepromjenjivih tipova objekata. Uzmimo primjer da objasnimo iznimke u nepromjenjivosti kao ลกto je prikazano u nastavku: โ
Python Code:
tupexample=([1,1],'guru99')
print("the tuple before change",tupexample)
print("the id of tuple before change",id(tupexample))
tupexample=([2,2],'guru99')
print("the tuple after change",tupexample)
print("the id of tuple after change",id(tupexample))
Izlaz:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
U gornjem kodu moลพete vidjeti da je prvi element, koji je lista, promjenjiv, dok je tuple nepromjenjiv. Vrijednost tuple ne moลพe se promijeniti, ali sadrลพaj popisa unutar tuple moลพe promijeniti njezinu vrijednost.
Dakle, ovo dovodi do iznimke da nepromjenjivi objekti ne mijenjaju svoju vrijednost, ali vrijednost konstituenata mijenja svoju vrijednost.
Promjenjivi vs. nepromjenjivi objekti
Evo glavnih razlika izmeฤu promjenjivih i nepromjenjivih objekata:
| Promjenjivi objekt | Nepromjenjivi objekt |
|---|---|
| Stanje objekta se moลพe promijeniti nakon ลกto je kreiran | Stanje objekta se ne moลพe promijeniti kada se jednom kreira |
| Promjenjivi objekti po prirodi se ne smatraju niti sigurnima. | Nepromjenjivi objekti po prirodi se smatraju niti sigurnima. |
| Promjenjivi objekti nisu konaฤni, pa stoga programer moลพe nastaviti mijenjati promjenjive objekte i koristiti iste objekte. | Kljuฤno je uฤiniti klase konaฤnima kada postoji stvaranje nepromjenjivog objekta |
Python Nepromjenjivi tipovi podataka
| Klasa | Objaลกnjenje | Nepromjenjivo ili ne |
|---|---|---|
| Bool | Booleova vrijednost | nepromjenljiv |
| Int | Cijela vrijednost (veliฤina moลพe biti proizvoljna) | nepromjenljiv |
| Plutati | Broj s pomiฤnim zarezom | nepromjenljiv |
| Popis | Niz objekata promjenjive prirode | promjenljiv |
| torka | Niz objekata nepromjenjive prirode | nepromjenljiv |
| Str | Znak / niz | nepromjenljiv |
| Postaviti | skup razliฤitih objekata koji su neureฤene prirode | promjenljiv |
| Frozenset | Klasa skupa nepromjenjive prirode | nepromjenljiv |
| dict | Rjeฤnik ili asocijativna kartaping | promjenljiv |


