Muuttuvat ja muuttumattomat objektit Python {EXAMPLES}

Mikรค on muuttuva objekti?

Vaihteleva sisรครคn Python voidaan mรครคritellรค objektiksi, joka voi muuttua tai jota voidaan pitรครค luonteeltaan muuttuvana. Muuttuva tarkoittaa kykyรค muokata tai muokata arvoa.

Muuttuvat objektit sisรครคn Python antaa ohjelmoijille mahdollisuuden saada objekteja, jotka voivat muuttaa niiden arvoja. Niitรค kรคytetรครคn yleensรค tietokokoelman tallentamiseen. Sitรค voidaan pitรครค muuntaneena, ja objektin sisรคinen tila on muuttunut.

Mitรค ovat muuttumattomat objektit?

Muuttumattomia esineitรค Python voidaan mรครคritellรค objekteiksi, jotka eivรคt muuta arvojaan ja attribuuttejaan ajan myรถtรค.
Nรคistรค objekteista tulee pysyviรค, kun ne on luotu ja alustettu, ja ne muodostavat kriittisen osan kรคytetyissรค tietorakenteissa Python.

Python kรคytetรครคn numeroissa, monikkoja, merkkijonot, jรครคdytetyt joukot ja kรคyttรคjรคn mรครคrittรคmรคt luokat joitakin poikkeuksia lukuun ottamatta. Ne eivรคt voi muuttua, ja niiden arvot ja se pysyy pysyvรคnรค, kun ne on alustettu ja siksi niitรค kutsutaan muuttumattomiksi.

In Python, kaikki on esine

In Python ohjelmointikielellรค kaikkea voidaan pitรครค objektina, joka sisรคltรครค listoja, kokonaislukuja ja funktioita. Tรคtรค ominaisuutta voidaan verrata muihin ohjelmointikieliin, jotka tukevat objekteja.

Tรคmรค ominaisuus voidaan tarkistaa kรคyttรคmรคllรค a Python tulkki alla olevan kuvan mukaisesti: โ€“

Python koodi:

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

lรคhtรถ:

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

Edelleen, Python tarjoaa sisรครคnrakennetun funktion nimeltรค id, joka palauttaa objektin osoitteen sellaisena kuin se on muistissa Python ohjelmointikieli.

Python koodi:

z=200
id(z)
print("The id of object is", id(z))

lรคhtรถ:

the id of object is 9795360

Yllรค olevassa koodissa id-funktio, jonka syntaksi on id(obj), antaa obj:n osoitteen in Python muisti. Tรคssรค on objekti nimeltรค z, ja sen mรครคritys on 200. Sitten objekti z siirretรครคn id-funktioon nimellรค id(z), ja Python toimittaa kohteen osoitteeksi 9795360.

Muuttuvat objektit sisรครคn Python

Muuttuvassa objektissa objektin arvo muuttuu ajan kuluessa.

Tรคssรค esimerkissรค olemme selittรคneet muuttuvat objektit Python, ja tรคmรค kรคyttรครค luetteloita muunnettavien objektien sovelluksena alla esitetyllรค tavalla: โ€“

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)

lรคhtรถ:

The list in Python [1, 2, 3]
The list in Python after changing value ['Gurru99', 2, 3]

Kuten voimme nรคhdรค yllรค annetusta esimerkistรค, muuttuva lista sisรครคn Python arvot olivat 1, 2 ja 3. Muokattavan listan ensimmรคinen elementti muutetaan arvosta 1 arvoon Guru99, eikรค se luo uutta objektia, kun uusi arvo alustetaan.

Tรครคllรค voimme kรคyttรครค id-menetelmรครค sen hyรถdyntรคmiseen. Seuraavassa havainnollistetaan id-menetelmรคn kรคyttรถรค muunnettavissa objekteissa alla esitetyllรค tavalla: โ€“

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

ulostulo

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

Seuraava kuva havainnollistaa muuttuvaa objektia Python kuten alla nรคkyy: -

Muuttuvat objektit sisรครคn Python

Muuttumattomia esineitรค Python

Muuttumattomia esineitรค Python ovat objekteja, joiden esiintymรคt eivรคt muutu ajanjakson aikana. Tietyn tyyppiset muuttumattomat ilmentymรคt, kun ne on luotu, eivรคt muutu, ja tรคmรค voidaan varmistaa kรคyttรคmรคllรค id-menetelmรครค Python.

Otetaan esimerkki kokonaislukutyyppisistรค objekteista Python joka kuvaa muuttumattomien objektien kรคsitettรค Python kuten alla nรคkyy: -

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

ulostulo

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

Yllรค voitiin nรคhdรค, ettรค "a":ssa on muutos. Tutkitaan kuinka mekanismi toimii:

  • Objektin arvo ei muutu, kun "a" alustetaan arvolla 344.
  • Sen sijaan luodaan uusi objekti ja se rajataan kirjaimella "a".
  • Toinen objekti, jolle on mรครคritetty 244, ei olisi enรครค kรคytettรคvissรค.
  • Yllรค olevassa esimerkissรค kรคytettiin kokonaislukuobjektia.

Kohdassa a=244 luodaan uusi objekti, johon viitataan "a":hen alla olevan kuvan mukaisesti: โ€“

Muuttumattomia esineitรค Python

Lรคhetรค kรคyttรคmรคllรค a=344:tรค, on uusi objekti, johon viitataan "a". Seuraava kaavio edustaa samaa: -

Muuttumattomia esineitรค Python

Siksi aina kun int-tyypin nimelle annetaan uusi arvo, nimen sitominen toiseen objektiin muuttuu. Sama periaate on samassa rivissรค, jouset, float ja Boolean, joita kutsutaan siksi muuttumattomiksi.

Vaikutukset sanakirjan avaimiin Python

Sanakirjat voidaan mรครคritellรค jรคrjestetyiksi kokoelmiksi, jotka tallentavat tiedot avainmuodossa eivรคtkรค salli kopioita. Sanakirjat sisรคltรคvรคt yhden avaimen, johon on kohdistettu vastaava arvopari. Niiden tyypit ovat muuttuvia, ja niiden sisรคltรถรค voidaan muuttaa myรถs alustuksen ja luomisen jรคlkeen.

Milloin tahansa avain osoittaa yhteen tiettyyn elementtiin kerrallaan. Sanakirjojen avaimet ovat muuttumattomia.

Otetaan hypoteettinen skenaario alla esitetyllรค tavalla: โ€“

a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Tulos: โ€“ Yllรค oleva Python koodi ei tuota tulosta, vaan se luo tyyppivirheen, jonka tyyppiรค ei voi muokata. Tรคmรค on hypoteettinen tilanne, eikรค sitรค kรคytetรค Python kรครคntรคjรค.

Tรครคllรค a on mรครคritelty [4,6], ja sanakirjassa se on mรครคritelty x. Tรคssรค, b on mรครคritelty [5,6,7], ja sanakirjassa se mรครคritellรครคn y:nรค.

  • Avaimen 'a' arvo on [4,6], ja se alustetaan edelleen x:ksi.
  • Avaimen "b" arvo on [5,6,7], joka alustetaan edelleen "y":ksi sanakirjassa.
  • Oletetaan nyt, ettรค arvoA' on liitetty 5:llรค ja 7:llรค, jotka ovat sanakirjan avain.
  • Sitten sanakirja on mutatoitu, ja se antaisi molemmat 'X' ja 'y' arvoina yllรค olevalle sanakirjalle.

Harkitse seuraavaa skenaariota yllรค olevan kuvan mukaisesti: โ€“

a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Ohjelmointikielenรค siis Python tekee sanakirjan avaimista muuttumattomia, ja sanakirjat ovat muuttumattomia tietotyyppejรค.

Poikkeuksia muuttumattomuudessa

Kuitenkin, Python tarjoaa poikkeuksia muuttumattomuuteen, tรคllaisia โ€‹โ€‹poikkeuksia voidaan havaita monikkoobjektityypille. Tuple voi olla muunnettavien ja muuttumattomien objektityyppien yhdistelmรค. Otetaan esimerkki selittรครคksemme muuttumattomuuden poikkeukset alla esitetyllรค tavalla: โ€“

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

lรคhtรถ:

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

Yllรค olevasta koodista nรคet, ettรค ensimmรคinen elementti, joka on lista, on muuttuva, kun taas monikko on muuttumaton. Monikon arvoa ei voi muuttaa, mutta monikon sisรคllรค olevan listan sisรคltรถ voi muuttaa sen arvoa.

Tรคstรค syystรค tรคmรค herรคttรครค poikkeuksen, ettรค muuttumattomat objektit eivรคt muuta arvoaan, mutta ainesosien arvo muuttaa arvoaan.

Muuttuvat vs. muuttumattomat objektit

Tรคssรค on tรคrkeimmรคt erot muuttuvien ja muuttumattomien objektien vรคlillรค:

Muuttuva objekti Muuttumaton esine
Objektin tilaa voidaan muuttaa luomisen jรคlkeen Objektin tilaa ei voi muuttaa luomisen jรคlkeen
Muuttuvia esineitรค ei pidetรค luonteeltaan lankaturvallisina. Muuttumattomia esineitรค pidetรครคn luonteeltaan lankaturvallisina.
Muuttuvia objekteja ei tehdรค lopullisiksi, joten ohjelmoija voi jatkuvasti muuttaa muuttuvia objekteja ja kรคyttรครค samoja objekteja. On kriittistรค tehdรค luokat lopullisiksi, kun on luotu muuttumaton objekti

Python Muuttumattomat tietotyypit

luokka Selitys Muuttumaton tai ei
bool Boolen arvo Muuttumaton
Int Kokonaisluku (suuruus voi olla mielivaltainen) Muuttumaton
kellua Liukulukuluku Muuttumaton
Lista Muuttuvan luonteen objektien sekvenssi Vaihteleva
monikko Muuttumattoman luonteen esineiden sarja Muuttumaton
str Merkki / merkkijono Muuttumaton
Asettaa joukko erillisiรค objekteja, jotka ovat luonteeltaan jรคrjestรคmรคttรถmiรค Vaihteleva
Frozenset Aseta muuttumattoman luonnon luokka Muuttumaton
Dict Sanakirja tai assosiaatiokarttaping Vaihteleva

Tiivistรค tรคmรค viesti seuraavasti: