Muutuvad ja muutumatud objektid Python {EXAMPLES}
Mis on muutuv objekt?
Muutuva sisse Python võib defineerida kui objekti, mis võib muutuda või mida võib pidada millekski muutlikuks olemuselt. Muutuv tähendab võimalust väärtust muuta või redigeerida.
Muutuvad objektid sisse Python võimaldavad programmeerijatel omada objekte, mis võivad nende väärtusi muuta. Tavaliselt kasutatakse neid andmete kogumite salvestamiseks. Seda võib pidada millekski, mis on muteerunud ja objekti sisemine olek on muutunud.
Mis on muutumatud objektid?
Muutumatud objektid sisse Python saab defineerida kui objekte, mis ei muuda aja jooksul oma väärtusi ja atribuute.
Need objektid muutuvad pärast loomist ja lähtestamist püsivaks ning moodustavad kasutatavate andmestruktuuride kriitilise osa Python.
Python kasutatakse numbrites, tuplid, stringid, külmutatud komplektid ja kasutaja määratud klassid mõne erandiga. Nad ei saa muutuda ning nende väärtused ja see jääb püsivaks, kui need on initsialiseeritud ja seetõttu nimetatakse neid muutumatuks.
In Python, kõik on objekt
aasta Python Programmeerimiskeeles võib kõike pidada objektiks, mis koosneb loenditest, täisarvudest ja funktsioonidest. Seda funktsiooni saab võrrelda teiste objekte toetavate programmeerimiskeeltega.
Seda funktsiooni saab kontrollida, kasutades a Python tõlk, nagu allpool näidatud: –
Python kood:
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))
Väljund:
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
Lisaks sellele Python pakub sisseehitatud funktsiooni nimega id, mis tagastab objekti aadressi nii, nagu see on mälus Python programmeerimiskeel.
Python kood:
z=200 id(z) print("The id of object is", id(z))
Väljund:
the id of object is 9795360
Ülaltoodud koodis annab funktsioon id, mille süntaks on id(obj), objekti obj aadressi Python mälu. Siin on objekt nimega z ja selle ülesandeks on 200. Seejärel suunatakse objekt z funktsiooni id kui id(z) ja Python edastab objekti aadressiks 9795360.
Muutuvad objektid sisse Python
Muutuva objekti puhul muutub objekti väärtus teatud aja jooksul.
Selles näites oleme selgitanud muutuvaid objekte Pythonja see kasutab loendeid muudetavate objektide rakendusena, nagu on näidatud allpool: –
Python kood:
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)
Väljund:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Nagu ülaltoodud näites näeme, on muudetav loend sisse Python olid väärtused 1,2,3. Muutuva loendi esimene element muudetakse 1-lt Guru99-ks ja see ei loo uue väärtuse initsialiseerimisel uut objekti.
Siin saame selle kasutamiseks kasutada id-meetodit. Järgmine illustreerib id-meetodi kasutamist muudetavate objektide jaoks, nagu allpool näidatud: –
Python kood:
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))
Väljund
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
Järgmine joonis illustreerib muutuvat objekti Python nagu allpool näidatud: -
Muutumatud objektid sisse Python
Muutumatud objektid sisse Python on objektid, mille eksemplarid perioodi jooksul ei muutu. Kindlat tüüpi muutumatud eksemplarid pärast loomist ei muutu ja seda saab kontrollida id-meetodiga Python.
Võtame näite täisarvu tüüpi objektidest Python mis illustreerib muutumatute objektide kontseptsiooni Python nagu allpool näidatud: -
Python kood:
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))
Väljund
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
Eespool oli näha, et "a" on muutunud. Uurime, kuidas mehhanism töötab:
- Objekti väärtus ei muutu, kui "a" initsialiseeritakse 344-ga.
- Selle asemel luuakse uus objekt ja see on piiratud tähega "a".
- Teisele objektile, mis on määratud kui 244, poleks enam juurdepääsetav.
- Ülaltoodud näites kasutati täisarvuobjekti.
Kui a=244, luuakse uus objekt ja sellele viidatakse "a"-le, nagu allpool näidatud: –
Postitage kasutades a=344, on uus objekt, millele on viidatud tähega "a". Järgmine diagramm näitab sama: -
Seega, kui int-tüübi nimele määratakse uus väärtus, muutub nime sidumine teise objektiga. Sama põhimõte joondub korteežidega, stringid, ujuk ja Boolean nimetatakse seetõttu muutumatuks.
Sõnastiku võtmete tagajärjed Python
Sõnaraamatuid saab defineerida kui järjestatud kogusid, mis salvestavad andmeid võtmevormingus ega luba duplikaate. Sõnaraamatud sisaldavad ühte võtit, millele on joondatud vastav väärtuspaar. Nende tüüp on muudetav ja nende sisu saab muuta ka pärast nende lähtestamist ja loomist.
Igal hetkel osutab võti korraga ühele konkreetsele elemendile. Sõnaraamatute võtmed on muutumatud.
Võtame hüpoteetilise stsenaariumi, nagu allpool näidatud:
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Väljund: – ülaltoodud Python kood ei anna väljundit ja selle asemel genereerib see räsimatut tüüpi tüübivea. See on hüpoteetiline olukord ja seda ei kasutata Python koostaja
Siin a
on defineeritud kui [4,6] ja sõnastikus on see defineeritud kui x. Siin b
on määratletud kui [5,6,7] ja sõnastikus on see defineeritud kui y.
- Võtme 'a' väärtus on [4,6] ja see lähtestatakse täiendavalt x-ks.
- Võtme b väärtus on [5,6,7], mis on sõnastikus täiendavalt lähtestatud y-ks.
- Oletame nüüd, et väärtuse 'a ' on lisatud 5 ja 7, mis on sõnastiku võti.
- Siis on sõnastik muteeritud ja see annaks mõlemat 'x' ja 'ja' ülaltoodud sõnastiku väärtustena.
Mõelge ülaltoodud stsenaariumile: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Seega programmeerimiskeelena Python muudab sõnastiku võtmed muutumatuks ja sõnastikud on muutumatud andmetüübid.
Erandid muutumatuses
Kuid Python pakub erandeid muutumatusest, selliseid erandeid võib täheldada korteeži objektitüübi puhul. Korteež võib olla muudetavate ja muutumatute objektitüüpide kombinatsioon. Toome näite, et selgitada muutumatuse erandeid, nagu on näidatud allpool: –
Python kood:
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))
Väljund:
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
Ülaltoodud koodist näete, et esimene element, mis on loend, on muutuv, samas kui korteež on muutumatu. Korpuse väärtust ei saa muuta, kuid korteeži sees oleva loendi sisu võib selle väärtust muuta.
Seetõttu tekib erand, et muutumatud objektid ei muuda oma väärtust, kuid koostisosade väärtus muudab nende väärtust.
Muutuvad vs muutumatud objektid
Siin on peamised erinevused muutuvate ja muutumatute objektide vahel:
Muutuv objekt | Muutumatu objekt |
---|---|
Objekti olekut saab pärast loomist muuta | Objekti olekut ei saa pärast loomist muuta |
Muutuvaid objekte ei peeta olemuselt niidikindlateks. | Muutumatuid objekte peetakse olemuselt niidikindlateks. |
Muutuvaid objekte ei muudeta lõplikuks ja seetõttu saab programmeerija muuta muutuvaid objekte ja kasutada samu objekte. | Muutumatu objekti loomisel on oluline muuta klassid lõplikuks |
Python Muutumatud andmetüübid
klass | Selgitus | Muutumatu või mitte |
---|---|---|
Bool | Boole'i väärtus | Muutumatu |
Int | Täisarv (suurus võib olla suvaline) | Muutumatu |
Float | Ujukomaarv | Muutumatu |
nimekiri | Muutuva iseloomuga objektide jada | Muutuv |
Tuple | Muutumatu olemusega objektide jada | Muutumatu |
Str | Märk / string | Muutumatu |
komplekt | Erinevate objektide kogum, mis on korrastamata | Muutuv |
Külmutatud | Määrake muutumatu olemuse klass | Muutumatu |
Dikt | Sõnastik või assotsiatiivne kaardistamine | Muutuv |