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 Koodi:
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,3. Vaihtelevan listan ensimmäinen elementti muutetaan arvosta 1 Guru99:ksi, 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 Koodi:
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: -
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 Koodi:
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: –
Lähetä käyttämällä a=344:tä, on uusi objekti, johon viitataan "a". Seuraava kaavio edustaa samaa: -
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 Koodi:
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 assosiatiivinen kartoitus | Vaihteleva |