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: -

Muutuvad objektid sisse Python

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: –

Muutumatud objektid sisse Python

Postitage kasutades a=344, on uus objekt, millele on viidatud tähega "a". Järgmine diagramm näitab sama: -

Muutumatud objektid sisse Python

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